我有一个 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秒!!
我希望缩短这段时间,让它更快。
如何提供改进该过程?:
- 使用客户端获取好友信息?
- 在我的数据库中缓存每个用户的好友列表(uids)?(是否可以添加订阅好友列表?)
- 追逐结果?(这不是一个好的选择,因为我想要最新的结果)?
- 将其拆分为每个事件的查询。我已经试过了,它需要更长的时间