据我所知,我们可以使用以下方法来捕获无效图像,但就我的情况而言,它无法捕获下载超时。 我试图从第三方网站获取图像,我的脚本继续加载 根本没有回应。也许我用来捕捉错误的方式还不够好? 任何人都可以建议更好的方法来捕获无效的文件和下载超时?谢谢!
$url = "https://www.example.com/image.jpeg";
if (checkRemoteFile($url))
{
$imagefile = $url;
$resource = imagecreatefromstring(file_get_contents($imagefile));
if ($resource == true)
{
echo "Image Good";
}
else
{
echo "Image Bad";
}
}
else
{
echo "Invalid file";
}
function checkRemoteFile($url)
{
$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);
if(curl_exec($ch)!==FALSE)
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:0)
提供的脚本对我来说很好,调试它检查卷曲错误:
function checkRemoteFile($url)
{
$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);
$result = curl_exec($ch);
if ($result === false) {
error_log(curl_error($ch));
}
curl_close($ch);
return $result !== false;
}
每次收到错误的响应或超时时,都会记录错误。如果您收到超时,可能是主机已关闭,我使用https://www.w3schools.com/css/trolltunga.jpg对其进行了测试,并且运行正常。