注意:这是一个性能问题
我在 mysql 数据库中有 20,000 个图像 url,我有一个 1 分钟间隔的 cron 运行来检查图像 url 是否有效且没有损坏。它在小型 EC2 上运行。我尝试过像@GetImageSize、检查标题和cURL 之类的方法,但它们最多需要10 分钟才能完成工作。我想知道是否有任何不涉及下载图像的方法,并且速度非常快。
以下是对循环中约 25 张图像的以下建议的一些测试(对他们表示感谢和赞扬):
function method2($link){ //45sec
if (@GetImageSize($link)) {
echo "image exists ";
}
}
function method4($url){ //13 sec
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(curl_exec($ch)!==FALSE) {
echo "image exists ";
}
}
function method3($filename){ //20sec
$h = fopen($filename, 'r');
if ($h !== false) {
echo 'File exists';
fclose($h);
}
}
function method5($url){ //21 sec
if(@file_get_contents($url,0,NULL,0,1)){
echo "image exists";
}
}
function method6($url){ //22 sec
if (false === file_get_contents($url,0,null,0,1)) {
echo "no ";
}
}
function method1($url){ //13 sec
exec("wget --spider -v ".$url);
}