在发出多个请求时,Facebook的图表api非常慢

时间:2011-11-17 14:20:34

标签: php facebook facebook-graph-api facebook-like

我正在尝试为我们运行的几个Facebook广告系列编写一个简单的跟踪系统(目前有七个广告系列)。 这个系统的一个关键特性就是能够实时查看这些页面的所有相同数量,所以我写了一个简单的PHP代码来从图形api获取每个页面的相似数量,我每隔几秒就用ajax调用它。 问题是来自facebook的响应缓慢,获得响应大约需要2秒钟,最多可以达到20(!!!)秒。 这是我为了得到类似计数而编写的函数:

function getlikes($pageid){
echo json_decode(file_get_contents("http://graph.facebook.com/" . $pageid . "?fields=likes"))->likes;
};

周围有什么办法吗?或者图形api只是很慢,我将不得不用一些优雅的解决方案处理它?<​​/ p>

感谢。

3 个答案:

答案 0 :(得分:1)

首先,请确保您正在缓存数据,这样每次有人查看该页面时您都不会重新请求数据。

遥远的第二,为避免为每个请求设置新的http连接,您可以使用批处理API:https://developers.facebook.com/docs/graph-api/making-multiple-requests/

答案 1 :(得分:0)

也许您需要使用此方法的访问令牌,不知道为什么它在我的localhost中不起作用,但是从图形资源管理器工作得很好

<?php
$pageids = array('xxxxxxxx');
$likes = json_decode(file_get_contents("http://graph.facebook.com/fql?q=SELECT page_id, fan_count FROM page WHERE page_id IN(". implode(',', $pageids) .")"));
?>

https://developers.facebook.com/tools/explorer

答案 2 :(得分:0)

我建议你在服务器的某个地方缓存类似的计数,以便快速发出AJAX请求(如果有多个客户端正在监视计数,那就更好了)。在服务器端,应该有一个cron作业更新类似的计数缓存。

为了加快从Facebook获取计数,您可以与curl多个请求并行地向其发送所有请求。如果您有兴趣,请查看rolling curl