我试图从coinmarketcap的api中检索数据,并将数据存储到缓存文件中。如果缓存文件早于10分钟,则检索新数据并将其存储到缓存文件。除了缓存数据之外,我已经能够让一切正常工作。缓存文件从未在插件目录中创建。任何帮助都将不胜感激。以下是代码:
function Tickers($data){
foreach($data as $item){
echo "<a href=/currencies/" .$item->symbol. '/' . $item->name. ">$item->symbol</a>";
echo "<br>";
echo '<span>$' . $item->price_usd . '</span>';
echo "<br>";
echo "<br>";
}
}
function getdata(){
$time = 600; //seconds
$cache_file = 'wp-content/plugins/cryptocurrency_tickers/cache.txt';
if(file_exists($cache_file)){
if(time() - filemtime($cache_file) > $time) {
// too old , re-fetch
$data = json_decode(file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=20'));
file_put_contents(cache_file,json_encode($data));
}
else{
//data is current
}
}else {
// create cache
$data = json_decode(file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=20'));
file_put_contents(cache_file, json_encode($data));
}
$data = json_decode(file_get_contents($cache_file));
Tickers($data);
}
发布于 2018-03-07 01:59:53
再看一遍您的代码,在$上的“cache_file”前面缺少“cache_file”
file_put_contents(cache_file,json_encode($data));
应该是
file_put_contents($cache_file,json_encode($data));
另外,当您从API获得json数据时,首先解码,然后编码,为什么不直接从API保存数据,它已经被json编码了。
代码的更好版本:
function Tickers($data){
foreach($data as $item){
echo "<a href=/currencies/" .$item->symbol. '/' . $item->name. ">$item->symbol</a>";
echo "<br>";
echo '<span>$' . $item->price_usd . '</span>';
echo "<br>";
echo "<br>";
}
}
function getdata(){
$time = 600; //seconds
$cache_file = '/path/to/cache.txt';
if(file_exists($cache_file)){
if(time() - filemtime($cache_file) > $time) {
// too old , re-fetch
$data = file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=20');
file_put_contents($cache_file, $data);
} else{
//data is current
}
} else {
// create cache
$data = file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=20');
file_put_contents($cache_file, $data);
}
$data = json_decode(file_get_contents($cache_file));
Tickers($data);
}
getdata();
此外,确保插件目录是可写的,您的web服务器用户。
https://stackoverflow.com/questions/49148638
复制相似问题