OneStep

php代码-判断远程文件是否存在

Toc目录

可以用于判断图片或是文件是否存在的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的远程文件 不起作用
点评:方法一和 方法三 速度都差不多体验有点糟

支付宝打赏 微信打赏

免责声明:本站多数资源来源于互联网。少数原创内容为本人随意书写不对其负任何法律责任(均为键盘和鼠标自行敲击),部分有助于网友的内容仅供学习与交流。如有转载、盗链等其它行为产生对国家社会网络不良影响均与本人无关。
版权说明:未经博主授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。

      




发表评论

发表新评论

请输入本站名:

暂无评论   

发送消息!
onestep
网站二维码
手机扫一扫,查看
.
贝多叶@聚合支付

真诚赞赏,手留余香

使用微信扫描二维码完成支付