0
$fql = "SELECT link_id, owner, created_time, title, summary, url, image_urls FROM link WHERE owner IN (select uid2 from friend where uid1 = me() LIMIT 20) AND created_time >= $_7ago";

上記のクエリはうまく機能します。ただし、LIMITを20から21以上に増やすと、エラーが発生し、クエリはNullを返します。すべての友達が共有しているリンクを検索しています。ありがとう。

4

1 に答える 1

0

そのクエリの実行には永遠に時間がかかります。Graph APIエクスプローラーで数回テストするだけで、20人の友達からリンクを取得するのに28秒以上かかります。これを書いているときに、100人の友達に対してクエリを実行しています。完了する前に、完了するかどうかを確認します。

すべての友達が共有するすべてのリンクを取得したい場合は、このクエリを小さなチャンクに分割して、複数回繰り返す必要があるようです。

私はあなたの親しい友人のリンクを最初に取得し、次にあなたとの共通点が少ない人々のために深く掘り下げるためにこのように構成するかもしれません:

SELECT link_id, owner, created_time, title, summary, url, image_urls FROM link 
  WHERE owner IN (SELECT uid FROM user WHERE uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = me()) 
    ORDER BY mutual_friend_count LIMIT $offset, 20)
  AND created_time >= $_7ago

$offset20の倍数で増分します。

これは、最初の結果をすばやく取得し、他の結果が利用可能になったときに入力する非同期クエリとして実行するのが最適です。これらすべての結果を得るには長い時間がかかります。

(100人の友達のクエリは5分経っても結果を返しません。)

ところで、質問を解決済みとしてマークすることを忘れないでください。

于 2012-08-16T02:06:30.843 に答える