在项目中遇到了要判断一个图片是否存在,远程服务器上
首先想到了用file_get_contents(),这个函数,可以打到效果,但是发现,会很慢,一直在请求,产看资料发现,file_get_contents/fopen 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存,curl函数则不一样
fopen/file_get_contents 只能对get形式的http请求,curl选择则更多
fopen/file_get_contents会受 php.ini中的allow_url_open设置的影响
然后使用curl函数感觉才是最佳选择,下面贴出curl请求代码
function getUrlExists($url){
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
if(preg_match("/404/", $contents)){
return false;
}else{
return true;
}
}
如果大家发现更好的解决方法,欢迎一起交流学习