PHP函数GETIMAGESIZE在60秒内超时检查远程文件

时间:2014-08-23 12:44:27

标签: php image url timeout

我正在使用getimagesize来检查图像是否存在。

图片位于远程网址中,因此我查看了一个链接。

如果图像存在,则响应时间不到2秒。

如果图像不存在,e也没有图像错误的链接,响应时间不到2秒。

问题是当图像不存在并且有链接说(图像未找到)或类似的东西时...... getimagesize一直试图找到图像正好60秒(我用php microtime检查) )。

其他方法也发生了相同的事情,需要60秒的响应...我尝试使用curl,使用file_get_contens,get_headers,imagecreatefromjpeg ....所有这些都需要60秒才能返回false。

知道如何减少时间吗?

1 个答案:

答案 0 :(得分:1)

尝试将此功能与CURLOPT_TIMEOUT

一起使用
function checkRemoteFile($url)
{
  $timeout = 5; //timeout seconds

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  // don't download content
  curl_setopt($ch, CURLOPT_NOBODY, 1);
  curl_setopt($ch, CURLOPT_FAILONERROR, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($ch, CURLOPT_TIMEOUT, $timeout);

  return (curl_exec($ch)!==FALSE);
}


$image = "/img/image.jpg";

if ( checkRemoteFile($image) )
{
  $info = getimagesize($image);
  print_r($info); //Print image info
  list($width, $height, $type, $attr) = $info; //Store image info
}
else
  echo "Timeout";

您也可以使用稍有不同的CURLOPT_CONNECTTIMEOUT

希望它有所帮助。 :)