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 相关文章推荐
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
php查询ip所在地的方法
Dec 05 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php 静态属性和静态方法区别详解
Apr 09 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
Jun 19 PHP
解决laravel查询构造器中的别名问题
Oct 17 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JS实现购物车特效
2017/02/02 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python怎么提高计算速度
2020/06/11 Python
python可以用哪些数据库
2020/06/22 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
擅自离岗检讨书
2014/02/11 职场文书
广告设计应届生求职信
2014/03/01 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
审美与表现自我评价
2015/03/09 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python