-1

私はソーシャルネットワーキングのウェブサイトに取り組んでいます。Facebookからログインするオプションがあります。ユーザーが「Facebookでログイン」をクリックしたとき。彼の連絡先などをデータベースにインポートしています。3 つの異なる FQL クエリを使用してデータを取得しています。1 は以下のとおりです。

var query1 = FB.Data.query("SELECT name,flid,owner,type from friendlist where owner = me()");
                          query1.wait(function (row) {
                              friends_array = row;
                              strdata = "";
                              for (i = 0; i < row.length; i++) {
                                  strdata += ' {"name": "' + row[i].name + '", "flid": "' + row[i].flid + '","owner": "' + row[i].owner + '", "type": "' + row[i].type + '"} ,'
                              }
                              strdata = strdata.substring(0, strdata.length - 1);
                              var newjson1 = '[' + strdata + ']';
                              $.post('loadfbdata.php', { user_id: userid, email: response.email, jsondata: newjson1, flag: '2' }, function (data) {

                              });

                          });

このような FQL クエリが 3 つあり、各クエリから返されたデータは、jQuery の post メソッドを使用してデータベースに格納されます。それらを独立して実行するにはどうすればよいですか。つまり、3 つの FQL クエリはすべてバックグラウンドで実行する必要があります。彼らが「連絡先をデータベースにインポートするために実行」してからメインページにリダイレクトするようにw8しないでください。現在、3 つの FQL クエリすべてが作業を実行できるように、読み込み中の画像を 20 秒間表示しています。

このタスクを実行するための最適なソリューションは何ですか?

4

2 に答える 2

1

まず第一に、理想的には、Facebook ユーザーの友達リストを保存しないでください。定期的に更新される可能性があり、データベースに余分な負荷がかかる可能性があるためです。

またはまだ保存したい

あなたができることの1つは、Facebookでログインしてホームページにリダイレクトした後、Javascript SDKから同じFQLまたはFB.apiを使用してFacebookのフレンドリストを取得し、そこからデータベースに保存することです。これらのアプローチでは、3 つのクエリすべてを同時に起動して保存します。これにより時間が短縮され、ユーザーは処理を待つ必要がなくなります

于 2013-08-03T06:15:20.767 に答える
0

1つの可能性は、これらのクエリを実行せずに通常どおり「Facebookでログイン」することです。次に、PHP を使用して、このユーザーが初めてログに記録されたかどうかを検出し、Javascript を挿入して、バックグラウンドで連絡先をインポートするように要求します。

<?php if ($no_contact_has_been_imported_from_this_user) { ?>
    $.ajax({
        ...
        url: "import.php",
        ...
    });
<?php } ?>
于 2013-08-03T06:13:47.303 に答える