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 相关文章推荐
一个简易需要注册的留言版程序
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
php下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
php封装的mongodb操作类代码
Aug 06 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
laravel异步监控定时调度器实例详解
Jun 21 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读取汉字的点阵数据
2015/06/22 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
PHP6新特性分析
2016/03/03 PHP
php进程间通讯实例分析
2016/07/11 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python中的print()输出
2019/04/12 Python
对Python _取log的几种方式小结
2019/07/25 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Python网页解析器使用实例详解
2020/05/30 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
《红军不怕远征难》教学反思
2014/04/14 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
合作合同协议书范本
2015/01/27 职场文书
使用pytorch实现线性回归
2021/04/11 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python