PHP program example for obtaining web page request status_PHP tutorial

WBOY
Release: 2016-07-13 10:24:44
Original
1154 people have browsed it

For the status code returned by the web page, generally we will check whether the status code of our website is 200 or whether the error page is a 404 code, and in most cases our method of checking is to use webmaster tools or ff browser to check. , very few people think of writing a function to view status codes.

This article briefly describes the program example of php to obtain the web page request status as follows:

Method 1, use fsockopen
(curl_getinfo is not recommended!)

Copy code The code is as follows:

function get_http_code($url="localhost", $port=80, $fsock_timeout=10){
set_time_limit(0);
ignore_user_abort(true);

/ / Recording start time
list($usec, $sec) = explode(" ", microtime(true));
$timer['start'] = (float)$usec + (float)$sec;

// Verify URL
if(!preg_match("/^https?:\/\//i", $url)){
$url = "http://" .$url;
}
// Support HTTPS
if(preg_match("/^https:\/\//i", $url)){
$port = 443;
}

// Parse URL
$urlinfo = parse_url($url);
if(empty($urlinfo['path'])){
$urlinfo['path' ] = '/';
}
$host = $urlinfo['host'];
$uri = $urlinfo['path'] . (empty($urlinfo['query'])? '':$urlinfo['query']);

// Open the connection through 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);
}

// Submit request
$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 is a simple package of the fsockopen function, which is slightly less efficient, but has a high success rate of capture, so I usually use it when snoopy has problems. 5.0.0 adds support for context. With context, it can also send header information, and customize user agents, referers, and cookies. 5.1.0 added offset and maxlen parameters to read only part of the file.

Method 2, use snoopy.class.php

Snoopy is a php class that is used to simulate the functions of a browser. It can obtain web content and send forms.

Copy code The code is as follows:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.jb51.net/');
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) {
  static $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.jb51.net/');
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);

一些常见的状态码为:
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务器超时
301 - 页面重定向

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/825353.htmlTechArticle对于网页返回状态代码一般情况下我们都会去查自己网站状态码是不是200或错误页面是不是404代码,并且多数情况下我们的查看方法就是使...
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template