• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php获取网页请求状态代码示例

php 搞代码 3年前 (2022-01-22) 19次浏览 已收录 0个评论

果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器会返回 HTTP 状态码响应请求。

此状态码提供关于请求状态的信息,告诉 Googlebot 关于您的网站和请求的网页的信息。

一些常见的状态码为:

200 – 服务器成功返回网页

404 – 请求的网页不存在

503 – 服务器超时

本文就此简述php获取网页请求状态程序示例如下:

方法一,使用 fsockopen

代码如下:

function get_http_code($url="localhost", $port=80, $fsock_timeout=10){    set_time_limit(0);    ignore_user_abort(true);    // 记录开始时间    list($usec, $sec) = explode(" ", microtime(true));    $timer['start'] = (float)$usec + (float)$sec;    // 校验URL    if(!preg_match("/^https?:\/\//i", $url)){        $url = "http://".$url;    }    // 支持HTTPS    if(preg_match("/^https:\/\//i", $url)){        $port = 443;    }    // 解析URL    $urlinfo = parse_url($url);    if(empty($urlinfo['path'])){        $urlinfo['path'] = '/';    }    $host = $urlinfo['host'];    $uri = $urlinfo['path'] . (empty($urlinfo['query'])?'':$urlinfo['query']);    // 通过fsock打开连接    if(!$fp = fsockopen($host, $port, $errno, $error, $fsock_timeout)){        list($usec, $sec) = explode(" ", microtime(true));        $timer['end'] = (float)$usec + (float)$sec;        $usetime = (float)$timer['end'] - (float)$timer['start'];        return array('code'=>-1, 'usetime'=>$usetime);    }    // 提交请求    $status = socket_get_status($fp);    $out = "GET {$uri} HTTP/1.1\r\n";    $out .= "Host: {$host}\r\n";    $out .= "Connection: Close\r\n\r\n";    $write = fwrite($fp, $out);    if(!$write){        list($usec, $sec) = explode(" ", microtime(true));        $timer['end'] = (float)$usec + (float)$sec;        $usetime = (float)$timer['end'] - (float)$timer['start'];        return array('code'=>-2, 'usetime'=>$usetime);    }    $ret = fgets($fp, 1024);    preg_match("/http\/\d\.\d\s(\d+)/i", $ret, $m);    $code = $m[1];    fclose($fp);    list($usec, $sec) = explode(" ", microtime(true));    $timer['end'] = (float)$usec + (float)$sec;    $usetime = (float)$timer['end'] - (float)$timer['start'];    return array('code'=>$code, 'usetime'=>$usetime);}

file_get_contents 是 fsockopen 功能的简单打包,效率稍低些,但是抓取成功率很高,所以在 snoopy 出问题的时候我一般拿他来用。5.0.0 添加了对 context 的支持,有了context,他也可以发送 header 信息,自定义用户 agent, referer, cookies 都不在话下。5.1.0 添加了 offset 和 maxlen 参数,可以只读文件的一部分内容。

方法二,使用snoopy.class.php

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.gaodaima.com/');curl_setopt($ch, CURLOPT_RANGE, '0-500');curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$result = curl_exec($ch);curl_close($ch);echo $result;$writefn = function($ch, $chunk) {  stati<div>……本2文来源gaodai.ma#com搞##代!^码@网3</div><code>搞代gaodaima码</code>c $data='';  static $limit = 500; // 500 bytes, it's only a test  $len = strlen($data) + strlen($chunk);  if ($len >= $limit ) {    $data .= substr($chunk, 0, $limit-strlen($data));    echo strlen($data) , ' ', $data;    return -1;  }  $data .= $chunk;  return strlen($chunk);};$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.gaodaima.com/');curl_setopt($ch, CURLOPT_RANGE, '0-500');curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);$result = curl_exec($ch);curl_close($ch);

以上就是php获取网页请求状态代码示例的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php获取网页请求状态代码示例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址