1

私は保存している単純なFacebookアプリケーションに取り組んでいます:

フェイスブックの友達ID

テーブル構造:

テーブル名: facebook_mapping 値:

app_id                fb_id
1               100003996070108
2               100003960002436
3               100003955972927
4               100003955972924

fql クエリを使用:

SELECT uid2 FROM friend WHERE uid1=FACEBOOK_USER_ID

これは、友達が 200 人未満の場合はうまく機能します。しかし、ユーザーの友達が 200 人を超える場合、アプリケーション ページを初めて実行すると、常にタイムアウトになります。30 秒以上かかると思いますが、サーバーには 30 秒後にタイムアウトするという制約があります。

PHPとMySQLを使用しています。私が考える1つの解決策は次のとおりです。

1) 最初にそのユーザーの 20 人の友達だけを取得してデータベースに追加する 2) バックグラウンド プロセスを実行して他の友達を集める

友達を集めるためのバックグラウンド プロセスや、これを行うための他の方法をセットアップするのを手伝ってください。

ありがとう。

4

2 に答える 2

3

(API リクエスト自体ではなく) データの挿入時にPHP スクリプトがタイムアウトした場合、どのように正確にテーブルにデータを追加していますか?

データベースで PHP ループなどで 200 以上の個別の INSERT ステートメントを実行していますか?

その場合は、すべてのデータ (またはその大きなチャンク) を次の形式で複数行の INSERT ステートメントに入れてみてください。

INSERT INTO table (column1, column2)
  VALUES (1, '100003996070108'), (2, '100003960002436'), (…)

これは、データベースに対して個別に多くのクエリを実行する必要がないため、PHP スクリプトのタイムアウトを防ぐのに役立ちます。

于 2012-06-24T12:08:01.870 に答える
2

これは Facebook API の問題ではないようです。サーバーで構成したタイムアウトだけです。バックグラウンド スレッドのアイデアは良いアイデアです。

于 2012-06-23T22:33:34.977 に答える