更改远程服务器上的 JSON 文件

Changing JSON file on remote server

我有一个 api 以 JSON 格式获取一些数据(限制每 1 分钟调用一次),我希望 api 可供所有拥有访问服务器。

我有一个 php 代码从 api 获取内容,然后在 javascript 文件中使用那个 JSON 对象。但是如果有多个用户访问该网站,api 每分钟被调用多次,所以只有一个人获取数据,其他人则没有。

这种情况有好的解决办法吗?

我尝试将 JSON 对象保存到远程文件中,然后访问该网站的每个人都会读取每分钟更改一次的 JSON 文件,但由于某种原因在远程服务器上 JSON 文件不是每分钟更新一次。是不是权限问题?

在 php 文件中,我使用 "file_get_contents" 从其余 api 中获取 json。 然后我保存数据:"file_put_contents"

是否有不同的解决方案来获取 JSON 数据(每 1 分钟更新一次)给访问网站的每个人以供在 javascript 文件中使用?

如何每隔一分钟将json数据保存到远程文件?

这个怎么样:

  • 将您的 API 数据保存在文件中。
  • 在另一个文件中保存您对 API 数据的最后调用。
  • 当用户需要您的数据时,检查最后一次 API 通话。
  • 如果不到 1 分钟,则从保存的文件中获取数据。
  • 如果超过一分钟,获取新数据,将其保存到文件,更新时间日志,然后将数据提供给用户。

例如,假设用户访问您的 index.php 页面:

// lets define the working files
define("FILE_API_TIMESTAMP", "api.timestamp.txt");
define("FILE_API_DATA", "api.data.json");
// initialize main vars
// last api call
$last_call = 0;
// latest api data
$api_data = false;
// this moment timestamp
$current_time = time();
// check last api call from saved file
if (file_exists(FILE_API_TIMESTAMP)) {
  $last_call = floatval( file_get_contents( FILE_API_TIMESTAMP ) );
}
// if more than 60 seconds passed since last call,
// call API then save results
if ($current_time - $last_call > 60) {
  // get new data
  // $api_data = getApiData(); -> put your function here: Curl etc...
  $api_data = "new data: ".time(); // just an example
  if ($api_data) {
    // if new data is available,
    // - log the current timestamp
    file_put_contents(FILE_API_TIMESTAMP, $current_time);
    // update $last_call for later use
    $last_call = $current_time;
    // - save the new data
    file_put_contents(FILE_API_DATA, $api_data);
  }
}
// check if we have new data, if not bring old data
if (!$api_data) {
  if (file_exists(FILE_API_DATA))
    $api_data = file_get_contents(FILE_API_DATA);
  else
    $api_data = "no_data";
}
// finally, give the user the updated data:
echo "Data updated at: ".date("d-m-Y H:i:s", $last_call);
echo "<hr/>";
echo $api_data;

这对你有帮助吗?