可以用于判断图片或是文件是否存在的php构造函数方法
早期使用file_get_contents函数 出现各种问题
方法一
function icon_exits($url){ // 这函数执行起来太慢了,不能用于频繁的请求
$curl = curl_init($url); // 效率太低 在正式生产环境中不可取
curl_setopt($curl, CURLOPT_NOBODY, true);// 不取回数据
curl_exec($curl);// 发送请求
$httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE); //获取返回码
if($httpCode==404){
return false;
}else{
return true;
}
}
别忘了关闭close
try{
//可能抛出异常
$content = curl_exec($curl);
}catch(Exception e){
//捕获异常
}finally{
//不管有无异常都执行
curl_close($curl);
}
方法使用icon_exits($qqCOS.H($v['icon']).'.png')
方法二
错误版
function icon_exits($url){ // 这函数执行起来好慢啊
$file_headers = @get_headers($url);
if($file_headers[0] == 'HTTP/1.0 404 Not Found')
{
return false;
} else {
return true;
}
}
可行版
function icon_exits($url){
stream_context_set_default( [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
]);
$arr = get_headers($url, 1);
if(!(stristr($arr[0], "200") && stristr($arr[0], "OK"))) {
return false;
}else{
return true;
}
}
总结 :速度还是不如人意 感觉比fopen和curl还慢
方法三
// 关闭https验证,不然 https路径的文件 不起作用
stream_context_set_default([
'ssl' => [
'verify_host' => false,
'verify_peer' => false,
'verify_peer_name' => false,
],
]);
function icon_exits($url){ // 这函数执行起来好慢啊
// Open file
$handle = @fopen($url, 'r');
// Check if file exists
if(!$handle){
return false;
}else{
return true;
}
}
!!!!!第二和第三个方法 原版 对https的远程文件 不起作用
点评:方法一和 方法三 速度都差不多体验有点糟
暂无评论