0

私は PHP Facebook SDK とグラフ API を使用して、ユーザーのすべての友達のいいね! をすべて取得しています。問題は、実行にかなり時間がかかることです。

現在、私はすべてのユーザーの友達を取得してから、各友達を個別にループして、すべてのいいねを収集しています。

スピードアップするために、「/user_friend_fbid/likes」リクエストを 50 件ごとにバッチ処理したいと考えています (ただし、これらに対してもページングを行います)。

すなわちこれ:

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 に答える