1

我有这个函数来检索 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 秒)。

有没有办法避免这种情况?为什么这么慢?

谢谢

4

1 回答 1

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')));

我希望这有帮助!

于 2012-12-14T19:02:10.563 回答