Facebookアプリでは、各イベントの日付範囲とrsvpステータスのユーザーイベントを取得する必要があります。Facebook - イベントとevent_memberとのFQL "join"を行う最善の方法?
ユーザーのイベントはきれいですが、現時点では、各イベントのrsvpステータスを一度に1つずつ検索しており、多数のイベントが発生しているユーザーのためにタイムアウトしています。
私はこの方法をユーザーのイベントを取得しています:
$fql = "SELECT eid, name, start_time, end_time
FROM event
WHERE eid IN (SELECT eid
FROM event_member
WHERE uid = $user)
AND start_time > '$timestamp'
ORDER BY start_time";
この部分は正常に動作しています。
そして、ここで私は一度に各イベント、いずれかのRSVPのステータスを取得しています方法は次のとおりです。
$fql = "SELECT rsvp_status
FROM event_member
WHERE uid = $user
AND eid = '$event_id'";
これもアウトイベントごとに正常に動作しますが、アプリページの回各イベントは毎回ルックアップされる必要があるので、ユーザは多くのイベントを有する。
通常のSQLでは、これを簡単に結合で行うことができますが、結合はFQLでは許可されていません。
一つの可能な解決策は、このように、各rsvp_statusの可能性をループすることにより、バッチでそれらを行うことです。
$fql = "SELECT eid, name, start_time, end_time
FROM event
WHERE eid IN (SELECT eid
FROM event_member
WHERE uid = $user
and rsvp_status = 'attending')
AND start_time > '$timestamp'
ORDER BY start_time";
これは、FQLの数は(私が考える3)rsvp_possibilitiesの数まで呼び出しを減少するであろう、しかし理想的には、私はむしろ1つのFQL呼び出しでそれをやりたいと思います。