我有这个功能,以便将Facebook评论的数量检索到博客帖子:
function comment_count($url) {
$json = json_decode(file_get_contents('https://graph.facebook.com/?ids=' . $url));
return ($json->$url->comments) ? $json->$url->comments : 0;
}
但是如果我在一个循环中插入它来获取查询结果以便检索页面上的五个帖子,这个功能会严重影响网站的速度(页面加载需要6-7秒)
有没有办法避免这种情况?为什么这么慢?
由于
答案 0 :(得分:2)
将逗号分隔的URL列表传递给ids参数,以便立即获取所有计数,或者将它们缓存在服务器端并使用这些值。
示例:https://graph.facebook.com/?ids=http://www.google.com,http://www.bing.com,http://www.yahoo.com
这是在Facebook的Graph API Reference的“选择”部分
中指定的以下是一个示例实现:
<?php
function comment_count($urls) {
$json = json_decode(file_get_contents('https://graph.facebook.com/?ids=' . implode(',', array_map("rawurlencode", $urls))));
$output = Array();
foreach($json as $url=>$data)
{
$output[$url] = isset($data->comments) ? $data->comments : 0;
}
return $output;
}
var_dump(comment_count(Array('http://www.facebook.com/', 'http://www.google.com')));
我希望这有帮助!