0

有一个code api url,它是输出json格式。我需要缓存我的 json 结果或不同的解决方案。因为我的页面在访问新用户时再次调用 api 并且页面打开速度存在问题。我怎样才能做到?

我的代码:

<?php
$jsonurl     = 'http://api.site.com/deal/browse.html?apiKey=VN43U6&p=2';
$json        = file_get_contents($jsonurl, 0, null, null);
$json_output = json_decode($json);
foreach ($json_output->deals as $objects) {
    $title = $objects->title;
    echo '<h5 class="coupon-title">' . $title . '</h5>';
}
?>
4

2 回答 2

1

如果你想使用 memcache 作为你的缓存服务,你可以尝试这样的事情:

$memcache = new Memcache;
$memcache->connect("localhost", 11211);
$hash = hash('sha256', $jsonurl);
$json = $memcache->get($hash);
if (!$json) {
    $json = file_get_contents($jsonurl, 0, null, null);
    $memcache->set($hash, $json, false, strtotime("+1 day"));    
}
$json_output = json_decode($json);
于 2013-10-26T11:33:16.537 回答
0

只需将其缓存在文件中:

$cache_json='yourfilename.json';
if(!is_file(cache_json)){
    $json = file_get_contents($jsonurl, 0, null, null);
    file_put_contents($cache_json,$json);
}
else{
    $json = file_get_contents($cache_json);
}
$json_output = json_decode($json);

在此示例中,缓存是无限的,您可以使用 cron 任务删除缓存文件或使用 php 函数 filemtime 检查文件创建时间戳以设置缓存时间限制。您也可以使用具有 3 个字段的表将其缓存在数据库中:键、值 (json)、超时

于 2017-01-06T10:22:27.047 回答