-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 を変更することを忘れないでください

Graph Explorer で試す

乾杯

于 2013-03-21T09:27:55.153 に答える
0

2つの可能なアプローチ:

  • バッチリクエストを使用して、各ユーザーIDの招待を個別に投稿します(個別に、ただしすべて1つのリクエストで)– 1つの招待が失敗した場合でも、次の招待投稿が行われます。

  • 最初に友達IDリストをFQLevent_membersテーブルで「横断」します–友達IDに一致するすべてのイベントメンバーのリストを(を使用してWHERE eid='event_id' AND uid IN(…,…))取得し、次に結果(すでにイベントに招待されている人)を「減算」します。元の友達IDリスト。(PHPではそのために使用できますarray_diff。)

于 2012-10-17T10:03:53.867 に答える