Php Facebook';s graph api在发出多个请求时速度非常慢
我正在尝试为我们运行的几个facebook活动(目前有七个活动)编写一个简单的跟踪系统。 该系统的一个关键特性是能够实时查看这些页面的所有相似计数,因此我编写了一个简单的php代码,从graph api获取每个页面的相似计数,并每隔几秒钟使用ajax调用一次。 问题是facebook的响应速度太慢,大约需要2秒才能得到响应,最多需要20秒(!!!)。 下面是我编写的函数,用于获得类似的计数: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
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个。谢谢,我想到了他的想法,但当时它似乎太复杂了。我想没有办法缓存类似的计数。