我知道这篇帖子已经很老了,但它在Google上显示,因此对于所有寻找的人,我制作了这个简单的程序,它可以curl一个JSON url并将其缓存到一个特定文件夹中的文件中。当再次请求json时,如果5分钟过去了,它将重新curl一次,如果还没有过去5分钟,则从文件中显示它,它使用时间戳来跟踪时间,享受吧。
function ccurl($url,$id){
$path = "./private/cache/$id/";
$files = scandir($path);
$files = array_values(array_diff(scandir($path), array('.', '..')));
if(count($files) > 1){
foreach($files as $file){
unlink($path.$file);
$files = scandir($path);
$files = array_values(array_diff(scandir($path), array('.', '..')));
}
}
if(empty($files)){
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_TIMEOUT, 15);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0');
$response = curl_exec($c);
curl_close ($c);
$fp = file_put_contents($path.time().'.json', $response);
return $response;
}else {
if(time() - str_replace('.json', '', $files[0]) > 300){
unlink($path.$files[0]);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_TIMEOUT, 15);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0');
$response = curl_exec($c);
curl_close ($c);
$fp = file_put_contents($path.time().'.json', $response);
return $response;
}else {
return file_get_contents($path. $files[0]);
}
}
}
为了使用,创建一个目录来存放所有缓存文件,对于我来说是/private/cache
,然后在内部创建另一个目录以用于请求缓存,例如x,当调用函数时应该像这样:
ccurl('json_url','x')
其中x是id,如果您有问题,请问我 ^_^也请享受(我可能会稍后更新它,以便不使用id的目录)
code
$query = "i%20hate%20my%20girlfriend"; $query = urlencode($query); $url = "http://search.twitter.com/search.json?q={$query}&rpp=100&result_type=recent&lang=en"; $tweet = file_get_contents($url); $tweet_array = json_decode($tweet, true);foreach ($tweet_array['results'] as $data) { $profileimg = $data['profile_image_url']; $postfrom = $data['from_user_name']; $postfromid = $data['from_user_id']; $created = $data['created_at']; $message = $data['text']; - GeordieDave1980$tweet = file_get_contents($url)
这行代码会给您提供原始的 JSON 数据。这就是您要找的东西。在上述函数中,请使用$json = file_get_contents($url);
。在您的代码中,请使用$tweet = getJson($url);
来获取并缓存 URL。 - deceze