Twitter现在已经关闭,我网站的一个主页依赖于从Twitter获取数据(依赖于问题 - 它应该是一个附件功能,因为它只显示来自其Feed的跟踪计数)。
以下是相关代码:
function socials_Twitter_GetFollowerCount($username) {
$method = function () use ($username) { return file_get_contents('https://api.twitter.com/1/users/show.json?screen_name='.$username.'&include_entities=true'); };
$json = cache('bmdtwitter', 3600, $method, false);
$json = json_decode($json, true);
return intval($json['followers_count']);
}
如果Twitter失败(或者在一段合理的时间内没有响应),这样做的好方法是什么,我们的网站似乎没有停机(我认为超时可能默认为30-60秒或更多)。
答案 0 :(得分:1)
您可以向file_get_contents
请求添加上下文并指定超时,以便在请求未在该时间内完成时挽救。如果您直接在页面加载上进行轮询,您可能需要考虑一个非常低的超时,例如2-3秒左右,因为大多数请求应该在此时间限制内完成。
更好的选择是通过cron进行提取并让您的网页使用缓存数据,但这里是使用file_get_contents
设置超时的示例。
function socials_Twitter_GetFollowerCount($username) {
$method = function () use ($username) {
$opts = array('http' =>
array(
'timeout' => 3
)
);
$context = stream_context_create($opts);
return file_get_contents('https://api.twitter.com/1/users/show.json?screen_name='.$username.'&include_entities=true', false, $context);
};
$json = cache('bmdtwitter', 3600, $method, false);
$json = json_decode($json, true);
return intval($json['followers_count']);
}
请参阅file_get_contents(),stream_context_create()和Context options and parameters。