在邀请用户参加活动时,我的脚本非常慢,因为它必须检查用户是否已被邀请参加活动,否则会出现facebook ouath错误。
我可以加快速度吗?
foreach ( $_POST['friends'] as $ids ) {
if ( $i < 199 ) {
$iZ = $facebook->api("/".$event_id."/invited/".$ids, "GET");
if ( $iZ['data'][0]['rsvp_status']):
$status = $iZ['data'][0]['rsvp_status'];
else:
$status="";
endif;
if ( ($status != 'declined' && $status != 'attending' && $status != "unsure" && $status != "not_replied") || empty($status)) {
$id.=$ids . ",";
$i=$i+1;
}
}
}
$id = substr_replace($id ,"",-1);
echo $facebook->api("/".$event_id . "/invited",'POST', array("users" => $id));
答案 0 :(得分:1)
像Cbroe所说,使用FQL,这里是代码:
SELECT uid,name FROM user WHERE uid IN
(SELECT uid1 FROM friend WHERE uid2=me()) AND NOT
(uid IN (SELECT uid FROM event_member where eid = 306212359507086))
这将为您提供未邀请参加该活动的朋友列表。
别忘了更改活动ID
干杯
答案 1 :(得分:0)
两种可能的方法:
使用batch requests单独发布每个用户ID的邀请(单独,但仍然只有一个请求) - 如果单个邀请失败,这无关紧要,以下邀请帖仍将被制作
首先使用FQL event_members
table“交叉”选择您的朋友ID列表 - 获取与您的朋友ID匹配的所有活动成员列表(使用WHERE eid='event_id' AND uid IN(…,…)
),然后“减去”您原来的朋友ID列表中的结果(已被邀请参加活动的人)。 (在PHP中,您可以使用array_diff
。)