600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php获取网页请求状态代码示例

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

时间:2020-09-08 12:52:54

相关推荐

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

后端开发|php教程

php,代码,状态

后端开发-php教程

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

网站php游戏源码,ubuntu怎么搭建nas,tomcat绿色版安装流程,斗鱼弹幕爬虫 java,php函数哪个效率高,seo方法分lzw

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

wifi云平台源码,vscode能编写python,ubuntu命令su,tomcat不能重复启动,爬虫 安装教程,php 不提示错误,面试谷歌seo运营的问题,织梦仿非织梦网站,动易sf模板lzw

一些常见的状态码为:

酒店电视展示网站源码,ubuntu界面改时间,tomcat8 初始密码,reecv爬虫实例,php数组创建教程视频学习,吴中seo推广lzw

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, /);curl_setopt($ch, CURLOPT_RANGE, -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) { static $data=\; static $limit = 500; // 500 bytes, its 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, /);curl_setopt($ch, CURLOPT_RANGE, -500);curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);$result = curl_exec($ch);curl_close($ch);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。