我花了大约4-5个小时就完成了这件事。许多研究并尝试了许多不同的解决方案。
基本上我有一个使用facebook SDK的网站。一切都在dev上工作正常。通过facebook图表链接登录和下载用户个人资料图片。 然而,在现场,下载配置文件图像大约需要4-5分钟。 使用Facebook登录也很慢。
我使用以下作为测试而没有其他代码。
<?php
echo 'start<br />';
echo time( );
echo '<br />';
$url = 'https://graph.facebook.com/100007116990483/picture?type=large';
$file_location = '<my hidden root>/test1.jpg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('User-Agent: ahm'));
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
$result=curl_exec($ch);
curl_close($ch);
$fileName = $file_location;
$file = fopen($fileName, 'w+');
fputs($file, $result);
fclose($file);
echo 'end<br />';
echo time( );
echo '<br /><br />';
echo '<img src="http://www.aussiehousemates.com.au/test1.jpg" />';
?>
您可以在此处运行此操作 www.aussiehousemates.com.au/fb-download-test.php
来自不同服务器的另一个测试(随机图像)也很慢。 www.aussiehousemates.com.au/fb-download-test2.php
但是这个文件使用copy()函数,速度就是我所期望的。 将副本用于其他文件会导致超时。 www.aussiehousemates.com.au/fb-download-test3.php
这是怎么回事?可能是什么原因?
快速代码如下
<?php
echo 'start<br />';
echo time( );
echo '<br />';
$url = 'http://1dak.com/img/2012/06/beautiful-polish-girl-euro-2012.jpg';
$file_location = '/home/ahm/public_html/test.jpg';
copy($url, $file_location);
echo 'end<br />';
echo time( );
echo '<br /><br />';
echo '<img src="http://www.aussiehousemates.com.au/test.jpg" />';
?>
如上所述,使用带有facebook图像的copy()会导致超时,并且不会返回任何内容。