使用分页进行图形API批处理?

时间:2012-04-20 05:38:37

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

我正在使用PHP Facebook SDK和图形API来获取所有用户朋友的所有喜欢。问题是需要花费很长时间才能执行。

目前我正在接收所有用户的朋友,然后单独循环浏览每个朋友并收集所有他们的喜欢。

为了加快速度,我想批量处理每个50“/ user_friend_fbid / likes”请求(但也要对这些请求进行分页)。

即。这样:

foreach (facebookUserFriends($fb_id) as $friend) { //custom func returns friends
    facebookUserLikes($friend['id'],$fb_location); //custom func returns all user likes
}

...对:

$i = 0;     
foreach (facebookUserFriends($fb_id) as $friend) {
    $queries[$i]['method'] = 'GET';
    $queries[$i]['relative_url'] = $friend['id'].'/likes';
    if ($i==49) {
       batchProcess($queries); //custom func returns all likes (but doesn't do paging)
       $i = 0;
    }
    $i++;
}

TL; DR如何在批量查询中执行分页?

2 个答案:

答案 0 :(得分:1)

那些东西可能会很快变得难看; - )

使用FQL多查询,并在一段时间内保存双方:https://developers.facebook.com/docs/reference/rest/fql.multiquery/

另见: Facebook New PHP SDK For Graph API - Multi Query

对于您的情况,单个FQL就足够了:

SELECT object_id, user_id FROM like WHERE user_id IN (SELECT uid2 FROM friend WHERE uid1=me())

例如,我为自己的朋友找到了喜欢的东西;用其他东西代替me()

答案 1 :(得分:0)

我会采取广度优先的方法。将前50个用户的第一批请求排队,并在返回批处理时保存数据,然后从返回的50个分页URL中创建一个新批处理。