我正在使用专用服务器。 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”
答案 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
而不是子查询来优化第二个查询。