2012-06-23 32 views
1

我工作的地方我存儲一個簡單的Facebook應用程序:存儲Facebook上的朋友 - 超時 - MySQL數據庫

Facebook好友ID

表結構:

表名:facebook_mapping 值:

app_id    fb_id 
1    100003996070108 
2    100003960002436 
3    100003955972927 
4    100003955972924 

使用FQL查詢:

SELECT uid2 FROM friend WHERE uid1=FACEBOOK_USER_ID 

這適用於少於200的朋友。但是如果用戶有超過200個朋友,當我第一次運行應用程序頁面時,它總是超時。我認爲它需要超過30秒,我的服務器有一個限制,它會在30秒後超時。

我正在使用PHP & MySQL。一個解決方案,我認爲是:

1)首先只需要20個朋友該用戶,並在數據庫 2添加它)運行一個後臺進程來收集其他朋友

請幫我安裝一個後臺進程來收集朋友或其他方法來做到這一點。

謝謝。

回答

3

如果這是你PHP腳本超時上插入數據(而不是API請求本身) - 然後究竟如何你將數據添加到您的表?

你是在數據庫的PHP循環中發射超過200個單獨的INSERT語句嗎?

如果是這樣的情況下,嘗試將所有的數據(或者更大的是大塊)爲多行INSERT語句,在

INSERT INTO table (column1, column2) 
    VALUES (1, '100003996070108'), (2, '100003960002436'), (…) 

形式這應該有助於防止PHP腳本超時,因爲您不必對數據庫進行如此多的單個查詢。

+0

是的,我們以相似的方式使用。我們沒有做個別插入語句。當我查詢Facebook時,需要一點時間才能獲取所有數據,並且在將json輸出處理爲insert語句之後,需要超過30秒纔會導致超時。你有其他建議嗎? – dang

+0

然後,你應該首先進行一些測量,以確定哪一部分實際上是耗時的......這樣你就不會從完全無用的角度開始。在那裏放一些「microtime」的回聲,然後我們會一起工作。 – CBroe

2

這似乎不是Facebook API的問題,只是您在我們的服務器上配置的超時。後臺線程的想法是一個很好的想法。

+0

我該如何做後臺線程? – dang