首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >curl 检测远程文件是否存在(404)

curl 检测远程文件是否存在(404)

作者头像
泥豆芽儿 MT
发布2022-09-22 11:23:44
1.3K0
发布2022-09-22 11:23:44
举报
  • 场景 在项目开发过程中,遇到一个生成七牛云压缩文件的需求 但是发现,即便返回接口认为成功,但七牛云那边实际上是需要一点时间的 那么就存在一个时间差,是无法访问文件链接的 此时想到一个处理方案:循环判断是否检测到文件已生成,不然就会延时等待 但实际测试了多种检测远程文件是否存在的代码 运行后,都是任务 文件未生成(实际都已经可以下载了!!) 简单的参考代码如下:

  • 代码
/**
 * 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 那就是: 有时远程链接已经实际存在了,但是运行检测依然不存在 这时,我的处理方法是: —— 将链接最后加几个随机字符,就可实时检验,达到想要的检测需要


  • 补充

在测试生成 七牛云压缩文件的时候,我注意到: 如果使用了同一个文件链接,可能会出现访问结果与实际七牛云存储的不一致

推测是某种缓存影响 处理方案: —— 不要生成同一个链接(可以加一个随机串),而原先失效或不用的资源链接,建议记录到数据表中,及时删除,避免资源空间的浪费

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档