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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
与数据库连接
Oct 09 PHP
PHP JSON 数据解析代码
May 26 PHP
php 冒泡排序 交换排序法
May 10 PHP
php代码书写习惯优化小结
Jun 20 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHPMailer发送邮件
Dec 28 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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
phpfans留言版用到的install.php
2007/01/04 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
js实现数组转换成json
2015/06/26 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python计算回文数的方法
2015/03/11 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
python list格式数据excel导出方法
2018/10/31 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
python常用运维脚本实例小结
2020/02/14 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python魔术方法专题
2020/06/19 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
祖国在我心中的演讲稿
2014/05/04 职场文书
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
Golang流模式之grpc的四种数据流
2022/04/13 Golang