2

単一の関数で4〜5個のfqlクエリを実行しています。それぞれの実行には2〜4秒かかります。その機能全体を実行するには、合計14〜15秒かかります。ユーザーは長時間待つ必要があります。ですから、その処理時間を短縮したいと思います。(PHPでは十分にサポートされているマルチスレッドの概念はありません。)

グラフAPIでバッチリクエストの概念について聞いたことがあります。そして、私はたくさんグーグルで検索しましたが、グラフAPIでfqlクエリにバッチリクエストを使用する方法を理解していませんでした。

  • 誰かがfqlクエリのバッチリクエストを使用するための例で説明を与えることができますか?
  • クエリ処理時間は何時までに短縮されますか?
  • 多くのfqlクエリの時間を短縮する別の方法はありますか?
4

3 に答える 3

7

更新しました:

https://graph.facebook.com/?batch=[{"method":"GET","relative_url":"me"},{"method":"GET","relative_url":"me/friends?limit=50"}]&access_token=ACCESS_TOKEN&method=post

詳細はこちら: http ://developers.facebook.com/blog/post/2011/03/17/batch-requests-in-graph-api/

于 2012-03-09T10:52:09.743 に答える
4

// $ current_user = facebook id

 $query1="SELECT uid, name FROM user WHERE is_app_user=1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $current_user)";
 $query2="SELECT uid, name, work_history FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $current_user )";
 $query3="SELECT uid, name, work, education FROM user WHERE uid = $current_user";
 $queries = array(
           array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query1)),
           array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query2)),
           array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query3))
            );

            $objs = $facebook->api('/?batch='.json_encode($queries), 'POST');

$ objsは、3つのクエリの結果全体のjson配列を取得します。

そして、それは多くの時間を節約しています。この3つのクエリは、個別に合計9秒かかります。マルチクエリでは7秒かかります。バッチリクエストの場合、3.6秒かかります。

于 2012-03-09T14:00:05.917 に答える
2

各FQLクエリを個別に呼び出す代わりに、FQLマルチクエリを使用してみませんか?

http://developers.facebook.com/docs/reference/rest/fql.multiquery/

UPDATE それ以外の場合、マルチクエリを使用したくない場合は、ここで探しているものがあると思います。FQLとBatchについてこれ以上何も見つかりませんでした。

curl \
     -F 'access_token=…' \
     -F 'batch=[{ "method": "POST", \
    "relative_url": "method/fql.query?query=select+name+from+user+where+uid=4", \
     }]
https://graph.facebook.com
于 2012-03-09T10:15:04.257 に答える