-1

我在一个社交网站上工作。有一个选项可以通过 facebook 登录。当用户点击“使用 Facebook 登录”时。我们正在数据库中导入他的联系人等。我正在使用三种不同的 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 查询,每个查询返回的数据使用 jQuery post 方法存储在数据库中。我怎样才能独立运行它们。我的意思是所有三个 FQL 查询都应该在后台运行。我不应该让他们“执行以在数据库中导入联系人”然后重定向到主页。现在,我展示了 20 秒的加载图像,以便所有三个 FQL 查询都可以执行它们的工作。

执行此任务的最佳解决方案是什么?

4

2 回答 2

1

首先,理想情况下,我们不应该存储任何 Facebook 用户的任何好友列表,因为它可能会定期更新,这会给您的数据库带来额外的负担。

或者仍然想存储

您可以做的一件事是,在使用 facebook 登录并重定向到主页后,无论使用来自 Javascript sdk 的相同 FQL 还是 FB.api,您都可以从那里获取 facebook 好友列表,然后从那里存储到数据库中。使用这些方法,您可以同时触发所有三个查询并存储它们。这减少了您的时间,用户不必等待处理

于 2013-08-03T06:15:20.767 回答
0

一种可能性是在不执行这些查询的情况下正常“使用 Facebook 登录”。然后,用PHP检测这个用户是否是第一次登录,然后在后台注入一个Javascript请求导入他的联系人。

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