在foreach循环中的facebook FQL查询性能?

时间:2012-02-17 06:07:55

标签: php facebook performance foreach

我正在尝试从Facebook的FQL请求一些信息,但请求有点慢。

$friend = "SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 30";

  $friendSQL = $facebook->fql($friend);
  foreach ($friendSQL as $friends_id){
    $uid2 = $friends_id['uid2']; 
     $query = "SELECT uid,username,name,pic_small FROM user WHERE uid='".$uid2."'";
     $friend_info = $facebook->fql($query);
    echo "<pre>";
    print_r($friend_info);
    echo "</pre>";
  }

所以基本上,我得到了30个朋友的列表,我正在尝试使用foreach循环从uid2(这是我的朋友)获取其他信息

我注意到请求很慢。有没有其他方式获取我的朋友的信息?

谢谢!

2 个答案:

答案 0 :(得分:2)

您的select语句可能类似于:

SELECT uid,username,name,pic_small FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 30)

所以你不必再使用循环了。这与FQL Multiquery几乎相同。

答案 1 :(得分:1)

您的脚本很慢,因为它在每次迭代中都会发出新的HTTP请求,并且每个新请求都会占用大量时间。正确的方法是使用FQL.multiquery。使用multiquery,您可以在一个HTTP请求中获得所需的所有信息,而无需使用foreach。