0

我能夠獲得登錄的用戶的朋友的朋友列表,但有限的朋友(應用程序用戶),除了一個朋友以外擁有較少的朋友的朋友列表。錯誤地獲取登錄用戶的朋友的朋友列表Facebook的php-sdk

等我解釋詳細。

我能夠得到那些是應用程序用戶的朋友的朋友列表。我的8個朋友是應用用戶。我可以給7個朋友的朋友,但我無法得到一個朋友的朋友。一個不同之處發現,他是有300左右。

3300的朋友別人我收到此錯誤

[Fri Mar 02 18:20:44 2012] [error] [client 192.168.1.2] PHP Fatal error: Uncaught Exception: 18: This API call could not be completed due to resource limits\n thrown in /var/www/jobjasoos/system/libraries/base_facebook.php on line 1040

我認爲這是因爲大沒有。的朋友。有什麼辦法可以避免這個錯誤?

我正在使用這個fql查詢。

$query="SELECT uid, name, work FROM user WHERE is_app_user=1 AND uid IN (SELECT uid2 FROM friend WHERE uid2 IN (SELECT uid2 FROM friend WHERE uid1 = $current_user)) ORDER BY name"; 

$user_info=$facebook->api(array('method'=>'fql.query', 
      'query'=>$query)); 

我看到以下鏈接,並沒有得到任何線索。

+0

現在這個查詢有時給人完美的結果,但有時它給爲零。我的問題是爲什麼fql在不同的事務中表現不同? – 2012-03-05 06:55:22

回答

0

寫這兩條線路,以避免超時調用Facebook的時候再調用Facebook的API。

set_time_limit(0); 
ini_set("memory_limit", "1024M"); 

$query="SELECT uid, name, work FROM user WHERE is_app_user=1 AND uid IN (SELECT uid2 FROM friend WHERE uid2 IN (SELECT uid2 FROM friend WHERE uid1 = $current_user)) ORDER BY name"; 

$user_info=$facebook->api(array('method'=>'fql.query', 
       'query'=>$query)); 
0

您的服務器未配置爲下載有這麼多的信息的請求。你可以嘗試重新配置你的服務器,但我會建議重新設計你的應用程序(如果可能)。也就是說,使用JavaScript SDK而不是PHP來獲取好友列表。這會將帶寬使用從服務器卸載到客戶端。我的應用程序使用JS SDK下載5000個沒有問題的朋友。

要繼續使用PHP,在這裏看到: How can I optimize my FQL to avoid Facebook timeouts?

+0

我無法使用JavaScript SDK。如何配置服務器以下載包含如此多信息的請求? – 2012-03-05 06:16:41

0
$friends = $facebook->api('me/friends'); 
//print_r($friends['data']); 
print_r("Number of Friends: ". count($friends['data'])); 
foreach ($friends['data'] as $key=>$listOfFriends) { 
    echo "<br/>".$key." ".$listOfFriends['name']."<img src='https://graph.facebook.com/".$listOfFriends['id']."/picture' width='50' height='50' title='".$listOfFriends['name']."' />";  
} 
+0

問題是得到朋友的朋友列表。您的答案會給出登錄用戶的朋友列表。 – 2012-06-15 15:03:48