php - 快速从 facebook graph api 获取信息?

标签 php facebook-graph-api

我有一个带有帖子的网站,我正在对它们实现 Facebook 评论。所有的帖子都在一个页面上,每个帖子下面都有一个“评论(3)”链接。单击此按钮后,它将转到此帖子的评论页面,显示 Facebook 插件。

我的问题是从“comments(3)”中获取 3 需要一段时间...我该如何优化它?这是评论页面的样子:https://graph.facebook.com/?ids=http://example.com/

在我收到评论的页面上,这是我对每个帖子的看法:

echo $postsClass->getCommentsCount($post['id'])

然后这是 getCommentsCount 函数的样子:

public function getCommentsCount($postId) {
    $commentsCount = 0;
    $url = 'http://myurl.com?post=' . $postId;
    $html = file_get_contents('http://graph.facebook.com/?ids=' . $url);
    $comments = json_decode($html, true);
    if (array_key_exists('comments', $comments[$url])) {
        $commentsCount = $comments[$url]['comments'];
    }

    return $commentsCount;
}

加载 6 个帖子的评论似乎需要大约 3 到 4 秒......关于如何改进它有什么想法吗?

谢谢!

最佳答案

Facebook Graph API 支持 Real-time Updates通过订阅系统。

我不确定更改通知是否有延迟;但是,它保证更有效率。 当您收到更新时,只需将结果缓存在您的数据库中以便快速检索。 请注意,如果您要订阅许多快速变化的对象,这可能是一个很重的负载。

另一种方法是安排您的服务器每隔一段时间(每隔几分钟?)轮询评论并存储信息。

或者,您可以显示页面,然后让用户的浏览器通过 AJAX 查询评论数。用户可以通过您的服务器检索信息,或者如果他们可以访问上下文中的对象,则直接从 Facebook 检索信息。

关于php - 快速从 facebook graph api 获取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989130/

相关文章:

php - Laravel 4.2 简单 session 逻辑不起作用

javascript - JS Facebook API错误: An active access token must be used to query information about the current user

iphone - Facebook iPhone 应用程序支持哪些自定义 URL 方案?

php - 使用时间发布表单

php - AJAX PHP MYSQL 更新/编辑记录 (jQuery)

javascript - 如何处理使用 facebook javascript sdk 的 Web 应用程序中的 javascript 加载错误

Android facebook sdk appinvites AppInviteDialog白屏

php - 没有使用 Facebook 调试器进行抓取

php - 具有通用类的独白实现

php - 字符在 UTF-8 网站上显示不正确