0

我正在使用专用服务器。1Gbps 端口。

有以下代码(与facebook连接)

    if($_POST['friend_id'] != 0) {
        $query = "SELECT uid, first_name, pic, sex FROM user WHERE uid = ".$_POST['friend_id'];
    }
    else {
        $query = "SELECT uid, first_name, pic, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me() order by rand() limit 1)";
    }

    $query = urlencode($query);
    $fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' . $access_token;
    $response = $facebook->api("/fql?q=$query");
    $data = $response['data'];

然后我使用 uid 来获取用户的照片。

    $img = file_get_contents('https://graph.facebook.com/'.$friend_id.'/picture?type=normal');
    $imagesurse1 = $friend_id.uniqid().'.jpg';
    file_put_contents($imagesurse1, $img);

    $img = file_get_contents('https://graph.facebook.com/'.$user_id.'/picture?type=normal');
    $imagesurse2 = $user_id.uniqid().'.jpg';
    file_put_contents($imagesurse2, $img);

这些代码需要 10 秒到 xx 秒。xx 达到了 60。可能是什么问题。

它是一个网站应用程序。网站没有“https”

4

3 回答 3

1

Facebook通常很慢。你不能缓存你的结果吗?您可以逐个测试您的代码,以便找出导致问题的部分吗?

于 2012-08-14T09:21:01.263 回答
1

一般来说,你可以说 Facebook 的 API 有点慢。您应该对您的页面进行基准测试以及最耗时的内容。但我敢打赌这是 Facebook API 调用。

你真的必须下载所有的图片吗?您不能只使用 OpenGraph-URL ( https://graph.facebook.com/'.$user_id.'/picture?type=normal) 作为 HTML 图像标签吗?

是否有可能使此调用与 AJAX 异步?

于 2012-08-14T09:29:46.940 回答
0

从头开始:调试问题。很可能只是 Facebook API 很慢,这确实会导致您的脚本等到所有资源都加载完毕,但这些结果可以被缓存。另一个问题可能是您的查询花费的时间太长。尝试使用 XDebug 进行基准测试以查看脚本的慢速部分,并查看您的查询是否具有正确的索引。例如,可以通过使用子查询来优化第二个join查询。

于 2012-08-14T09:31:28.670 回答