缓存文件 x 分钟 php
Cache file for x minutes php
我正在尝试使用以下代码缓存来自另一个站点的商品价格。
$cache_file = $_SERVER['DOCUMENT_ROOT'] . '/prices.json';
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 9))) {
$file = file_get_contents($cache_file);
} else {
$url = 'http://csgo.backpack.tf/api/IGetPrices/v4/?key=XXXXXXXXXXXXXX';
$file = curl_load($url);
$fp = fopen('/prices.json', 'w');
fwrite($fp, $file, LOCK_EX);
fclose($fp);
}
api键是对的,还是写不出来。 api 返回的结果是一个 json 字符串。我想把它写成文件,这样我就可以解码并用它来给物品定价。任何人都可以在这里帮助我,将不胜感激。
您正在尝试写入文件系统的基本目录 (/
),您没有(也不应该)从可通过网络访问的 PHP 脚本对其进行写入访问.您需要为 fopen()
:
构建正确的路径
fopen($_SERVER['DOCUMENT_ROOT'] . '/prices.json', 'w');
注意:您在检查文件是否存在时使用了一次上述路径,但后来只使用了/prices.json
。
一个更好的、更少重复的方法是使用你已经设置的变量,$cache_file
:
fopen($cache_file, 'w');
我正在尝试使用以下代码缓存来自另一个站点的商品价格。
$cache_file = $_SERVER['DOCUMENT_ROOT'] . '/prices.json';
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 9))) {
$file = file_get_contents($cache_file);
} else {
$url = 'http://csgo.backpack.tf/api/IGetPrices/v4/?key=XXXXXXXXXXXXXX';
$file = curl_load($url);
$fp = fopen('/prices.json', 'w');
fwrite($fp, $file, LOCK_EX);
fclose($fp);
}
api键是对的,还是写不出来。 api 返回的结果是一个 json 字符串。我想把它写成文件,这样我就可以解码并用它来给物品定价。任何人都可以在这里帮助我,将不胜感激。
您正在尝试写入文件系统的基本目录 (/
),您没有(也不应该)从可通过网络访问的 PHP 脚本对其进行写入访问.您需要为 fopen()
:
fopen($_SERVER['DOCUMENT_ROOT'] . '/prices.json', 'w');
注意:您在检查文件是否存在时使用了一次上述路径,但后来只使用了/prices.json
。
一个更好的、更少重复的方法是使用你已经设置的变量,$cache_file
:
fopen($cache_file, 'w');