-1

邀请用户参加活动时,我的脚本非常慢,因为它必须检查用户是否已被邀请参加活动,否则会出现 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));
4

2 回答 2

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

在图形资源管理器上试用

干杯

于 2013-03-21T09:27:55.153 回答
0

两种可能的方法:

  • 使用批量请求单独发布每个用户 ID 的邀请(单独发布,但仍然是一个请求)——如果单个邀请失败,没关系,仍然会发布以下邀请帖子。

  • 首先使用FQLevent_members“交叉”您的朋友 id 列表——获取与您的朋友 id 匹配的所有活动成员的列表(使用WHERE eid='event_id' AND uid IN(…,…)),然后“减去”结果(已被邀请参加活动的人)你原来的朋友ID列表。(在 PHP 中你可以使用array_diff它。)

于 2012-10-17T10:03:53.867 回答