我使用此函数来检索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秒)。
有没有办法避免这种情况?为什么它这么慢?
谢谢
发布于 2012-12-15 03:02:11
将以逗号分隔的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')));
我希望这能帮到你!
https://stackoverflow.com/questions/13884342
复制相似问题