我为网页做了一个简单的 twitter 提要。我使用 API 的 JSON 响应保存了一个缓存文件,然后使用 jQuery 读取它。
它运行良好,问题是它随机达到 150 个请求的 REST API 限制,而我每小时只做 6 个(每 10 分钟 1 个),据我所知,我没有任何其他提要在我的主机(MediaTemple gs)中,每小时可能会处理很多请求。
我知道我可以使用一个帐户进行身份验证并获得 350 个请求的限制,我还没有测试过,但我认为这根本不能解决问题。
这是我每 10 分钟执行一次的 cron:
<?php
//Set local timezone
putenv("TZ=America/Caracas");
//Function to get contents using cURL
function url_get_contents ($Url) {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
//The path of the file that contains cached tweets
$cache = '/home/xxxxx/domains/example.com/html/demos/webname/twitter-json.txt';
//Call the api and get JSON response
$data = url_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=webname&count=100");
$parsed = json_decode($data, true);
//This is a workaround I made to exit the script if there's an error(it works)
if ($parsed['error']) exit;
//I change the twitter date format to d/m/y H:i
foreach ($parsed as $key => $value) {
$parsed[$key]['created_at'] = date('d/m/y H:i',strtotime($value['created_at']));
}
//I encode to JSON
$data = json_encode($parsed);
//Save the file
$cachefile = fopen($cache, 'wb');
fwrite($cachefile,$data);
fclose($cachefile);
?>