2011-03-25 54 views
4

我記錄了我的應用程序的所有用戶在本地,MySQL數據庫。我擁有獲取用戶在線狀態的所有相關信息[UID, access_token並授予extended permission]。Facebook的FQL查詢,以獲得所有用戶在線

如何獲得所有用戶的在線狀態?

我使用目前的做法,是將單獨查詢每個用戶:

$facebook->api(array 
(
    'access_token' => 'x', 
    'method'  => 'fql.query', 
    'query'  => "SELECT uid, name, first_name, last_name, online_presence FROM user WHERE uid = x" 
)); 

但是,這是一次以程序與150個用戶。我甚至不談論400+或1000+。

p.s.多查詢不適合我,因爲詢問用戶存在需要提供access_token

回答

0

所有在線

SELECT name,uid FROM user WHERE 
    online_presence IN ('active', 'idle') 

與朋友的

SELECT name,uid FROM user WHERE 
    online_presence IN ('active', 'idle') 
    AND uid IN (
    SELECT uid2 FROM friend WHERE uid1 = $user_id 
) 
+0

這不起作用:你的說法是不可轉位。 WHERE子句必須包含一個可索引列。這樣的列在從 – Laphroaig 2011-04-14 20:29:37

+0

鏈接的表格中標有*,我也試圖找到有效的解決方案。 – Laphroaig 2011-04-14 20:30:16

0

這是不是一個真正的選擇,在你爲什麼會需要這個數據而言,它不是作爲目的顯而易見的。也許如果你能提供更多的信息,可以有不同的解決方案。

另一個可行的選擇是依賴Chat API。這會告訴你所有在Facebook聊天中設置爲在線狀態的用戶。這不會太可靠,因爲這包括僅僅訪問Facebook Chat(桌面/移動軟件)的用戶而不是真正的網站用戶。

1

我的解決辦法:

SELECT name, uid, online_presence FROM user WHERE uid=me()