我正在开发一个Facebook Canvas应用程序,其功能之一是复制最大的个人资料照片(50x50)。 20位朋友将其粘贴到600x500像素的模板上。这个特殊功能在上周(8月13日至14日)正常工作,当时我的服务器开始显示504网关超时(NGINX)或500内部服务器错误(Apache)。我尝试了所有可能的选项,包括回滚代码更改,迁移到不同的服务器,增加PHP.ini中的超时,使用FQL而不是Graph API,但没有帮助修复此Timeout问题。
最近,我意识到该应用程序在使用Facebook图片网址(https://graph.facebook.com/uid/picture或 Facebook CDN路径
我注意到的另外两件事。
你以前遇到过类似的问题吗?知道出了什么问题或Facebook最近实施了任何图像下载政策吗?
如果有人可以帮助我,我将感激不尽。
答案 0 :(得分:0)
使用cURL,您需要使用CURLOPT_FOLLOWLOCATION
,以便正确地将请求转发到图像的CDN位置。以下示例演示了如何工作:
header( 'Content-type: image/jpeg' );
$curl = curl_init();
$url = 'https://graph.facebook.com/60506094/picture';
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 0 );
$resp = curl_exec( $curl );
curl_close( $curl );
echo $resp;
然后,您可以将$resp
传递到imagecreatefromstring
函数。