0

我正在使用 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 如何在批处理查询中执行分页?

4

2 回答 2

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()用别的东西代替。

于 2012-04-20T06:05:20.400 回答
0

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

于 2012-07-17T22:35:49.003 回答