2013-01-18 66 views
1

我正在開發一個Facebook應用程序,我需要從用戶那裏獲取大量數據。我擔心Facebook的限制。我無法逐個發送查詢,我很快就會收到錯誤4「API太多呼叫」。所以我想知道什麼是更好的方法,如果將查詢分組到多查詢或批量發送它們。順便說一句,我將不得不在批量請求中使用多查詢。所以這裏是一個例子:)Facebook FQL多查詢與批量請求

假設USER_A和USER_B是朋友,所以我可以用1個訪問令牌訪問它們。

multiquery for USER_A: 
"Q0":"SELECT post_id FROM stream WHERE source_id=<USER_A>", 
"Q1":"SELECT id FROM comment WHERE post_id IN (SELECT post_id FROM #Q0)" 

multiquery for USER_B 
"Q2":"SELECT post_id FROM stream WHERE source_id=<USER_B>", 
"Q3":"SELECT id FROM comment WHERE post_id IN (SELECT post_id FROM #Q2)" 

那麼,什麼是更好的方法,這些分組2個multiqueries到1個大multiquery或將它們放入一個批次的要求嗎?在這種情況下,Facebook會把它算作1個API調用嗎? Facebook每天有一些像100M API調用的限制。因此,如果我批量發送2個多查詢/更大的多查詢,將Facebook計爲1個API調用?

編輯:通過批量要求我的意思是這https://developers.facebook.com/docs/reference/api/batch/

我不是問我是否應該使用FQL或圖形API,我想知道是否有批量發送multiqueries並將它們發送至1大的差異multiquery ..

回答

2

如果你可以用一個access_token做任何事情,按照我的經驗,大量的FQL多查詢比批處理請求更快地返回結果。

此外,看着你的榜樣查詢,可以通過組合這些削減查詢下來的數量:

'User_A_Comments': 
    "SELECT id, post_id FROM comment WHERE post_id IN (SELECT post_id FROM 
    (SELECT post_id FROM stream WHERE source_id=<USER_A>))" 

,一個批次的請求會給你的是,你可以使用多個訪問令牌來獲得這樣的好處信息在一個鏡頭。

+0

thx爲指出我可以使用多個訪問令牌批處理請求:) – Caldur