Facebook的批量要求
问题描述:
我试图几个请求改写成一个批次的请求Facebook的批量要求
$posts = $facebook->api('/me/feed?limit=9999999');
for($i = 0; $i < count($posts['data']); $i++)
{
$comments = $facebook->api($posts['data'][$i]['id'].'/comments');
$likes = $facebook->api($posts['data'][$i]['id'].'/likes');
}
进入
$batch = array();
$req = array(
'method' => 'GET',
"name" => "prispevky",
'relative_url' => '/me/feed',
);
$batch[] = json_encode($req);
$req = array(
'method' => 'GET',
'relative_url' => '{result=prispevky:$.data.*.from.id}/comments'
);
$batch[] = json_encode($req);
$req = array(
'method' => 'GET',
'relative_url' => '{result=prispevky:$.data.*.id}/likes'
);
$batch[] = json_encode($req);
$params = array(
'batch' => '[' . implode(',',$batch) . ']'
);
try
{
$info = $facebook->api('/','POST',$params);
print_r($info);
}
catch(FacebookApiException $e) {
error_log($e);
$info = null;
}
但我收到错误404的一些你的要求不存在的别名,然后名单墙上的所有饲料ID。当我通过简单的请求打电话给我时,我会成功接收它。 有人可以帮助我,告诉我哪里有错误?
答
亨利循环尝试使用此方法$评论& $喜欢
“这将返回的评论和发布数据0。除此之外,每个岗位喜欢你必须添加一个新的数组。我看到你是如何想循环数组请求,我从来没有能够得到该方法的工作,因为评论和喜欢存在于一个单独的表可以这么说。“
注意:批量只接受最多20个请求,所以请求999999帖子循环仍然只会返回第一组19评论/喜欢,因为第一个请求是帖子。
$queryProfileFeed = array(
array('method' => 'GET', 'relative_url' => '/me/feed?fields=id%26'.$app_access_token.'' 'name' => 'getLnC', 'omit_response_on_success' => false),
array('method' => 'GET', 'relative_url' => '/{result=getLnC:$.data.0.id}/comments?fields=id%26offset=0'),
array('method' => 'GET', 'relative_url' => '/{result=getLnC:$.data.0.id}/likes?fields=id%26offset=0'),
);
$batchResponse = $facebook->api('?batch='.json_encode($queryProfileFeed), 'POST');
/* json decode response for comments */
$Comments = json_decode($batchResponse[1]['body'], true);
/* json decode response for likes */
$Likes = json_decode($batchResponse[2]['body'], true);
我用上面的方法,但有很多更多的批量要求,以显示我的墙在我的插件
但我只请求第2组的意见,并从最初的10个员额喜欢。更重要的是,似乎降低性能,并经常超时引发错误,如“别名不exsist”
谢谢您的回复! 您的代码有效,与我的代码非常相似。你有一些改进,我忘了像特定的领域id等等。 因此,我更新我的代码,只为场0,而不是所有的人。 'relative_url'=> '/{result=prispevky:$.data.0.id}/comments' 和它的作品。但是,如果我得到所有的ID,然后要求每个ID,我将保存没有请求时间。 – Jindra
请求不是问题吗?我的印象是数据丢失,涉及试图批量超过20个请求?你可以为其创建一个新的20个20的限制,你正在请求。 编辑:我要与所有的语句来试试这个*,看看它是如何工作的,我从来没有真正试图摆脱批次所有评论与* –
我只是基准你的方法了,哇差异显着“谢谢你,你也解决了我的一个问题:-)“ 你是如此正确omg - ** 80个最新的帖子和每个20个评论,从Facebook页面在3秒以内。** https:// shawnsspace。 COM /插件/ TimeLineFeedBenchMark.php?主题=黑&的pageid = Facebook的 –