Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook';s graph api在发出多个请求时速度非常慢_Php_Facebook_Facebook Graph Api_Facebook Like - Fatal编程技术网

Php Facebook';s graph api在发出多个请求时速度非常慢

Php Facebook';s graph api在发出多个请求时速度非常慢,php,facebook,facebook-graph-api,facebook-like,Php,Facebook,Facebook Graph Api,Facebook Like,我正在尝试为我们运行的几个facebook活动(目前有七个活动)编写一个简单的跟踪系统。 该系统的一个关键特性是能够实时查看这些页面的所有相似计数,因此我编写了一个简单的php代码,从graph api获取每个页面的相似计数,并每隔几秒钟使用ajax调用一次。 问题是facebook的响应速度太慢,大约需要2秒才能得到响应,最多需要20秒(!!!)。 下面是我编写的函数,用于获得类似的计数: function getlikes($pageid){ echo json_decode(file_ge

我正在尝试为我们运行的几个facebook活动(目前有七个活动)编写一个简单的跟踪系统。 该系统的一个关键特性是能够实时查看这些页面的所有相似计数,因此我编写了一个简单的php代码,从graph api获取每个页面的相似计数,并每隔几秒钟使用ajax调用一次。 问题是facebook的响应速度太慢,大约需要2秒才能得到响应,最多需要20秒(!!!)。 下面是我编写的函数,用于获得类似的计数:

function getlikes($pageid){
echo json_decode(file_get_contents("http://graph.facebook.com/" . $pageid . "?fields=likes"))->likes;
};
有什么办法吗?或者graph api太慢了,我必须用一些优雅的解决方案来处理它


谢谢。

也许你需要在这个方法中使用一个访问令牌,不知道为什么它在我的本地主机中不起作用,但是在图形浏览器中效果很好

<?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) .")"));
?>


我建议您在服务器上的某个位置缓存like计数,以加快AJAX请求的速度(如果有多个客户端监视计数,则效果更好)。在服务器端,应该有一个cron作业来更新like count缓存


为了加快从Facebook获取计数,您可以同时向其发出所有请求和多个请求。如果您感兴趣,请首先查看库

,确保您正在缓存数据,这样您就不会在每次有人查看页面时都请求数据


第二,为了避免为每个请求设置新的http连接,您可以使用批处理API:

我的函数是服务器端的,即使在这个时候它也是用PHPS编写的,但可能最多有10个。谢谢,我想到了他的想法,但当时它似乎太复杂了。我想没有办法缓存类似的计数。