PHP使用get_headers函数判断远程文件是否存在的方法


Posted in PHP onNovember 28, 2014

本文实例讲述了PHP使用get_headers函数判断远程文件是否存在的方法。分享给大家供大家参考。具体实现方法如下:

以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下。

先来简单了解get_headers()函数

get_headers() 返回一个数组m包含有服务器响应一个 HTTP 请求所发送的标头。

get_headers:发送服务器响应HTTP请求

get_headers(字符串url[链接格式])

get_headers()以数组的形式返回服务器HTTP请求m如果执行失败,将返回FALSE和一个错误的水平E_WARNING,

可选参数设置为1,get_headers()能分析系统的响应速度和集数组中的键,

注意:使用该函数需要把 php.ini里面的allow_url_fopen = On,才能使用

实例代码如下:

<?php 

$url = 'https://3water.com'; 

print_r(get_headers($url)); 

print_r(get_headers($url, 1)); 

?>

运行结果如下:
Array

(

    [0] => HTTP/1.1 200 OK

    [1] => Cache-Control: max-age=1800

    [2] => Content-Length: 54874

    [3] => Content-Type: text/html

    [4] => Content-Location: https://3water.com/index.htm

    [5] => Last-Modified: Fri, 28 Nov 2014 03:34:56 GMT

    [6] => Accept-Ranges: bytes

    [7] => ETag: "b66ba847bcad01:bc5"

    [8] => Server: Microsoft-IIS/6.0

    [9] => Date: Fri, 28 Nov 2014 03:37:34 GMT

    [10] => Connection: close

)

Array

(

    [0] => HTTP/1.1 200 OK

    [Cache-Control] => max-age=1800

    [Content-Length] => 54874

    [Content-Type] => text/html

    [Content-Location] => https://3water.com/index.htm

    [Last-Modified] => Fri, 28 Nov 2014 03:34:56 GMT

    [Accept-Ranges] => bytes

    [ETag] => "b66ba847bcad01:bc5"

    [Server] => Microsoft-IIS/6.0

    [Date] => Fri, 28 Nov 2014 03:37:35 GMT

    [Connection] => close

)

判断远程文件是否存在代码如下:
//判断远程文件是否存在   

function remote_file_exists($url) {   

        $executeTime = ini_get('max_execution_time');   

        ini_set('max_execution_time', 0);   

        $headers = @get_headers($url);   

        ini_set('max_execution_time', $executeTime);   

        if ($headers) {   

            $head = explode(' ', $headers[0]);   

            if ( !emptyempty($head[1]) && intval($head[1]) < 400) return true;   

        }   

        return false;   

}

排除重定向的实例代码如下:
<?php  

/** 

 * Fetches all the real headers sent by the server in response to a HTTP request without redirects 

 * 获取不包含重定向的报头 

 */  

     

function get_real_headers($url,$format=0,$follow_redirect=0) {  

  if (!$follow_redirect) {  

    //set new default options  

    $opts = array('http' =>  

        array('max_redirects'=>1,'ignore_errors'=>1)  

    );  

    stream_context_get_default($opts);  

  }  

  //get headers  

    $headers=get_headers($url,$format);  

    //restore default options  

  if (isset($opts)) {  

    $opts = array('http' =>  

        array('max_redirects'=>20,'ignore_errors'=>0)  

    );

    stream_context_get_default($opts);  

  }  

  //return  

    return $headers;  

}  

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP实现事件机制的方法
Jul 10 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
php进程间通讯实例分析
Jul 11 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
Laravel ORM 数据model操作教程
Oct 21 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
php的mssql数据库连接类实例
Nov 28 #PHP
smarty中post用法实例
Nov 28 #PHP
smarty简单入门实例
Nov 28 #PHP
php最简单的删除目录与文件实现方法
Nov 28 #PHP
php查找指定目录下指定大小文件的方法
Nov 28 #PHP
thinkphp四种url访问方式详解
Nov 28 #PHP
thinkphp数据查询和遍历数组实例
Nov 28 #PHP
You might like
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Python闭包思想与用法浅析
2018/12/27 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python相对企业语言优势在哪
2020/06/12 Python
如何对python的字典进行排序
2020/06/19 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
巴西网上药房:onofre
2016/11/21 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
物流仓储计划书
2014/01/10 职场文书
学生党支部先进事迹
2014/02/04 职场文书
优秀员工评优方案
2014/06/13 职场文书
大学生心理活动总结
2014/07/04 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
Python anaconda安装库命令详解
2021/10/16 Python