PHP获取访问页面HTTP状态码的实现代码


Posted in PHP onNovember 03, 2016

方法一

$header_info=get_headers('https://3water.com/');
echo $header_info[0];
//耗时 0.67~0.78

方法二

$ch = curl_init ( 'https://3water.com/' );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_exec ( $ch );
$httpcode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE ); // 200
curl_close ( $ch );
echo $httpcode;
//耗时 0.84~0.94

方法三给curl设置一些参数,可以加快速度,代码来自网络

$curl = curl_init();
$url='https://3water.com/';
curl_setopt($curl, CURLOPT_URL, $url); //设置URL
curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header
curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了
curl_exec($curl); //开始执行啦~
$httpcode=curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~
curl_close($curl); //用完记得关掉他
echo $httpcode;
//耗时 0.45~0.53

代码四

核心代码:

/**
 * 获取远程URL的HTTP状态
 * 
 * @version 0.0.1
 * @Author Chenjl * 
 * @param string $url  远程URL
 * @param string $data  ture[返回HTTP状态数组] | false[返回状态数值]
 * 
 * @return mixed
 */
function getHeaders($url,$data=FALSE){
 $_headers = get_headers($url,1);
 if( !$data ){return $_headers;}
 $curl = curl_init(); 
 curl_setopt($curl,CURLOPT_URL,$url);//获取内容url 
 curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息 
 curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息 
 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出 
 curl_setopt($curl,CURLOPT_TIMEOUT,30); //超时时长,单位秒 
 curl_exec($curl); 
 $rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE); 
 curl_close($curl);
 return $rtn;
}

上面的代码,逐风已将两种获取方式进行一个整合,方便不同获取HTTP状态情景的需求;

返回结果:

# 调用案例1:getHeaders('https://3water.com\/\',true);
# 返回结果:200 // 直接返回HTTP状态码
 
# 调用案例2:getHeaders('https://3water.com/',false);
# 返回结果:
/*
array(10) { 
[0]=> 
string(15) "HTTP/1.1 200 OK" 
["Server"]=> 
string(5) "nginx" 
["Date"]=> 
string(29) "Mon, 04 Jul 2016 06:21:35 GMT" 
["Content-Type"]=> 
string(9) "text/html" 
["Content-Length"]=> 
string(5) "26898" 
["Last-Modified"]=> 
string(29) "Mon, 04 Jul 2016 06:16:00 GMT" 
["Connection"]=> 
string(5) "close" 
["Vary"]=> 
string(15) "Accept-Encoding" 
["ETag"]=> 
string(15) ""5779ff20-6912"" 
["Accept-Ranges"]=> 
string(5) "bytes" 
} 
*/

基本上就这些了,大家可以适当补充

PHP 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
php cli 小技巧
Jun 03 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
PHP扩展开发入门教程
Feb 26 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
Swoole扩展的6种模式深入详解
Mar 04 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 #PHP
PHP读取文件的常见几种方法
Nov 03 #PHP
PHP自定义多进制的方法
Nov 03 #PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 #PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 #PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 #PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 #PHP
You might like
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
js替换字符串的所有示例代码
2013/07/23 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
如何快速上手Vuex
2017/02/14 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
移动端效果之IndexList详解
2017/10/20 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
详解Vite的新体验
2021/02/22 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python 文件与目录操作
2008/12/24 Python
python统计cpu利用率的方法
2015/06/02 Python
Python 多线程的实例详解
2017/09/07 Python
python中的字符串内部换行方法
2018/07/19 Python
python框架中flask知识点总结
2018/08/17 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python实现微信打飞机游戏
2020/03/24 Python
Python进行统计建模
2020/08/10 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
重阳节登山活动方案
2014/02/03 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
工程部岗位职责范本
2015/04/11 职场文书
英语投诉信范文
2015/07/03 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
mysql数据库如何转移到oracle
2022/12/24 MySQL