/**
* php使用 curl 判断404
* @param string $url
* @return bool
*/
function check_url($url = ''){
stream_context_set_default(
array(
'http' => array(
'timeout' => 5,
)
)
);
$header = get_headers($url,1);
if(strpos($header[0],'200')){
return true;
}
if(strpos($header[0],'404')){
return false;
}
if (strpos($header[0],'301') || strpos($header[0],'302')) {
if(is_array($header['Location'])) {
$redirectUrl = $header['Location'][count($header['Location'])-1];
}else{
$redirectUrl = $header['Location'];
}
return check_url($redirectUrl);
}
}
当调用该方法时,发现了一个
BUG
那就是: 有时远程链接已经实际存在了,但是运行检测依然不存在 这时,我的处理方法是:—— 将链接最后加几个随机字符,就可实时检验,达到想要的检测需要
在测试生成 七牛云压缩文件的时候,我注意到:
如果使用了同一个文件链接,可能会出现访问结果与实际七牛云存储的不一致
推测是某种缓存影响 处理方案: —— 不要生成同一个链接(可以加一个随机串),而原先失效或不用的资源链接,建议记录到数据表中,及时删除,避免资源空间的浪费