查看: 8|回复: 0

检测网站状态码 PHP函数

[复制链接]
发表于 昨天 17:08 | 显示全部楼层 |阅读模式
这是一个基于PHP的查询网站状态码函数,可以直接函数调用,当然也可以封装成自己的api

  1. function GetHttpStatusCode($url){
  2.          $curl = curl_init();
  3.          curl_setopt($curl,CURLOPT_URL,$url);//获取内容url
  4.          curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息
  5.          curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息
  6.          curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出
  7.          curl_setopt($curl,CURLOPT_TIMEOUT,9); //超时时长,单位秒
  8.          curl_exec($curl);
  9.          $rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE);
  10.          curl_close($curl);
  11.          return  $rtn;
  12. }
复制代码
一些常见状态代码
10x:请求收到,继续处理;
20x:操作成功收到,分析、接受;
30x:完成此请求必须进一步处理;
40x:请求包含一个错误语法或不能完成;
50x:服务器执行一个完全有效请求失败;
上述函数返回的是状态码,那想进一步输出对应的汉字表述可以继续使用下面的函数。
下面代码输出HTTP响应状态码的PHP函数
  1. function get_status_header_desc($code) {
  2.     if (!isset($status_header_desc)) {
  3.         $status_header_desc = array(
  4.             100 => '客户必须继续发出请求',
  5.             101 => '客户要求服务器根据请求转换HTTP协议版本',
  6.             200 => '请求成功 ',
  7.             201 => '提示知道新文件的URL ',
  8.             202 => '接受和处理、但处理未完成',
  9.             203 => '返回信息不确定或不完整 ',
  10.             204 => '请求收到,但返回信息为空 ',
  11.             205 => '服务器完成了请求,用户代理必须复位当前已经浏览过的文件',
  12.             206 => '服务器已经完成了部分用户的GET请求 ',
  13.             300 => '请求的资源可在多处得到 ',
  14.             301 => '永久移动 ',
  15.             302 => '在其他地址发现了请求数据 ',
  16.             303 => '建议客户访问其他URL或访问方式 ',
  17.             304 => '客户端已经执行了GET,但文件未变化 ',
  18.             305 => '请求的资源必须从服务器指定的地址得到 ',
  19.             306 => '前一版本HTTP中使用的代码,现行版本中不再使用 ',
  20.             307 => '申明请求的资源临时性删除 ',
  21.             400 => '错误请求,如语法错误 ',
  22.             401 => '请求授权失败 ',
  23.             402 => '保留有效ChargeTo头响应',
  24.             403 => '请求不允许 ',
  25.             404 => '没有发现文件、查询或URl',
  26.             405 => '用户在Request-Line字段定义的方法不允许 ',
  27.             406 => '根据用户发送的Accept拖,请求资源不可访问 ',
  28.             407 => '类似401,用户必须首先在代理服务器上得到授权',
  29.             408 => '客户端没有在用户指定的饿时间内完成请求 ',
  30.             409 => '对当前资源状态,请求不能完成 ',
  31.             410 => '服务器上不再有此资源且无进一步的参考地址 ',
  32.             411 => '服务器拒绝用户定义的Content-Length属性请求',
  33.             412 => '一个或多个请求头字段在当前请求中错误 ',
  34.             413 => '请求的资源大于服务器允许的大小 ',
  35.             414 => '请求的资源URL长于服务器允许的长度 ',
  36.             415 => '请求资源不支持请求项目格式 ',
  37.             416 => '请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段',
  38.             417 => '服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求',
  39.             500 => '服务器产生内部错误',
  40.             501 => '服务器不支持请求的函数',
  41.             502 => '服务器暂时不可用,有时是为了防止发生系统过载',
  42.             503 => '服务器过载或暂停维修',
  43.             504 => '关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长',
  44.             505 => '服务器不支持或拒绝支请求头中指定的HTTP版本'
  45.         );
  46.     }
  47.     if (isset($status_header_desc[$code])) {
  48.         return $status_header_desc[$code];
  49.     } else {
  50.         return '';
  51.     }
  52. }
复制代码
我们可以用本文的代码封装一个api,可以用来检测网站状态

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表