最近在使用imagecreatefromjpeg,imagecopy 缓存一些略缩图,遇见一个奇怪的问题。1. 浏览器直接输入图片地址,可以正常打开(打开速度很慢)。2. 使用 imagecreatefromjpeg,产生500错误。3. 浏览器打开过一次图片,再使用imagecreatefromjpeg,PHP代码可以工作。4. 加一段curl,先模拟浏览器打开一次图片,再使用imagecreatefromjpeg, PHP代码可以工作。
图片地址: http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg错误信息:
imagecreatefromjpeg(http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Errorcurl 代码: $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$gets = curl_exec($ch);
curl_close($ch);问题:这到底是什么原因造成的?是由于图片地址打开速度慢,imagecreatefromjpeg 抓取时超时?使用curl代码,可以截取图片,但是代码运行时间加倍。有什么方法可以解决吗,比如设置imagecreatefromjpeg超时;直接结合curl和imagecreatefromjpeg,缩短运行时间?谢谢。PS:试过get_file_contents(图片地址),同样500错误,看来只有curl比较耐心,不会超时,只是运行速度非常慢。
图片地址: http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg错误信息:
imagecreatefromjpeg(http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Errorcurl 代码: $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/7_nani_6.jpg/450px-7_nani_6.jpg");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$gets = curl_exec($ch);
curl_close($ch);问题:这到底是什么原因造成的?是由于图片地址打开速度慢,imagecreatefromjpeg 抓取时超时?使用curl代码,可以截取图片,但是代码运行时间加倍。有什么方法可以解决吗,比如设置imagecreatefromjpeg超时;直接结合curl和imagecreatefromjpeg,缩短运行时间?谢谢。PS:试过get_file_contents(图片地址),同样500错误,看来只有curl比较耐心,不会超时,只是运行速度非常慢。
解决方案 »
- swfupload 上传失败求解
- iis+php5+mysql5 Call to undefined function mysql_connect()
- php如何实现cer证书的导入
- PHP使用GD如何实现[黑白照片\浮雕效果\老照片\素描效果\凸透镜\漩涡]的效果
- 一个关于 Apache URL Rewrite 的问题。急!!!
- 有关php连接mssql时mssql_select_db的错误。。。
- 如何使用PHP来生成EXCEL文件?请各位帮忙了,在线等,急急!!!
- 原来很好的php留言簿文件却无法回复、无法留言、无法删除,…… 只能县是一个页面,是怎么回事??看来还是.gif的问题,我还是装回 php4.0.5吧。高手!何在!!!!!!!!!!!
- PHP 求和的疑问,求高手帮忙。
- 三级联动下拉框搜索后怎么让select框选中回显?
- 页面多radio和check如何验证?
- 页面在ie下空白火狐下正常 求解
不错误才怪file_get_contents打开的是网络的图片,跟您的网速有关
php.ini里已经开启
display_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
但是打开error.log,没有发现相关的错误提示。
用 imagecreatefromstring 打开到资源
do {
$s = file_get_contents($url);
}while($im = imagecreatefromstring($s) === FALSE);你可以保存 $s 以备后用
你可以直接使用图像资源 $im
你还可以在循环中加入有条件中断的代码
再问一个问题,如果在CURL里加入 curl_setopt($ch,curlopt_connecttimeout,0) ,是不是可以强制curl等待打开完整页面后,再执行下一步程序?
0 就是总是等待