我的Facebook网站应用程序非常慢

时间:2012-08-14 09:16:14

标签: php facebook facebook-graph-api

我正在使用专用服务器。 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”

3 个答案:

答案 0 :(得分:1)

Facebook通常很慢。你不能缓存你的结果吗? 你可以一块一块地测试你的代码,这样你就能找出导致问题的部分吗?

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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