2012-04-20 58 views
0

我正在使用PHP Facebook SDK和圖形API來獲取所有用戶的朋友的所有喜歡。問題是執行需要相當長的一段時間。帶分頁的圖形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我怎麼批量查詢中進行分頁?

回答

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()

+0

嗯,這不是一個有趣的語言。我已經制定了如何檢索用戶喜歡和用戶的朋友,但不是所有,如果朋友喜歡... – 2012-04-24 06:54:19

+0

更新我的答案與示例FQL查詢 – 2012-04-24 07:02:08

+0

這似乎工作,但只返回「MUSICIAN/BAND」: SELECT名稱,類型 FROM 頁凡在 PAGE_ID (SELECT PAGE_ID FROM page_fan 其中uid IN (SELECT UID2 從相知 WHERE UID1 =我())) - 然後按類型= 「本地企業」 過濾返回4個結果,這不是一切。我讀過FQL不會返回所有內容。 – 2012-04-24 07:17:19

0

我會採取廣度優先的方法。排隊前50個用戶的第一批請求,並在批處理返回時保存數據,然後從返回的50個分頁URL中創建一個新批處理。