0

我有一个 facebook 活动列表,我想检索参加每个活动的朋友的列表。

这部分由 REST 服务器完成:

/**
 * $this->facebook is instance of `BaseFacebook`
 * $results contains 2 events
**/
$stime=time();

$fb_eids=array();
foreach($results as $result)
    $fb_eids[]=$result['event']->getFacebookID();

$fb_eids=implode(',',$fb_eids);
$fql=array();
$fql['q1'] = "SELECT uid2 FROM friend WHERE uid1 = me()";
$fql['q2'] = <<<SQL
SELECT uid, eid FROM event_member WHERE 1
    AND eid IN({$fb_eids})
    AND rsvp_status = 'attending'
    AND uid IN (SELECT uid2 FROM #q1)
;
SQL;

var_dump($this->facebook->api(array('method'=>'fql.multiquery','queries'=>$fql)));
var_dump(time()-$stime);

结果是这个过程花了我5秒!!
我希望缩短这段时间,让它更快。

如何提供改进该过程?:

  1. 使用客户端获取好友信息?
  2. 在我的数据库中缓存每个用户的好友列表(uids)?(是否可以添加订阅好友列表?)
  3. 追逐结果?(这不是一个好的选择,因为我想要最新的结果)?
  4. 将其拆分为每个事件的查询。我已经试过了,它需要更长的时间
4

0 回答 0