5
$access_token = $facebook->getAccessToken();
$query = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())";
$query = urlencode($query);
$fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' .    $access_token;
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode($fql_query_result, true);

これがクエリです。友達が限られているため、作業が速くなります。しかし、一部のアプリ ユーザーは、約 2000 人以上の友達がいる場合、非常に遅いと言っています。彼らはそれも30秒から数分かかったと言った。

なぜそれは非常に遅いのですか?この要求に誤りはありますか?

4

3 に答える 3

4

まず第一に、ユーザーをフィルターに掛けてuidから選択する限りuid、外側のクエリは冗長に見えます。したがって、最終的なクエリは次のように減らすことができます

SELECT uid2 FROM friend WHERE uid1=me()

file_get_contents2 つ目: 次のようにではなく、fb php sdk を使用して FQL クエリを実行する方が少し便利です。

$facebook->api("/fql?q={$fql}");

( https://stackoverflow.com/a/7827550/251311から取得)

于 2012-07-16T20:24:48.927 に答える
1

収集するデータが増えるため、単純に遅くなります。1 回のクエリで 2000 人以上の友達はかなり多いです...

https://developers.facebook.com/live_statusに役立つ情報がいくつかあります。

プラットフォームのライブ ステータス (知っておくと便利です) の他に、平均 API 応答時間と API エラー数を示す 2 つのグラフもあります。リクエストが非常に遅いことに気付いた場合は、そのリンクにアクセスして、システム全体の問題であるかどうかを確認してください。

于 2012-07-16T07:17:42.387 に答える
0

私の見解では、FQL は優れていますが、通常のグラフ API では要件を満たすことができない場合に使用する必要があります。特定のケースで、唯一の要件が友達の ID を取得することである場合は、次のコードを使用するだけです。

FB.api("me/friends?fields=id&limit=3000", function(resp){//process data});
于 2012-07-16T08:10:00.853 に答える