웹사이트에 페이지를 표시하라는 요청이 서버로 전송되면(예: 사용자가 브라우저를 통해 페이지에 액세스하거나 Googlebot이 페이지를 크롤링하는 경우) 서버는 다음에 대한 응답으로 HTTP 상태 코드를 반환합니다. 요청.
이 상태 코드는 요청 상태에 대한 정보를 제공하여 Googlebot에 귀하의 사이트와 요청한 페이지에 대해 알려줍니다.
몇 가지 일반적인 상태 코드는 다음과 같습니다.
200 – 서버가 웹페이지를 성공적으로 반환했습니다.
404 – 요청한 웹페이지가 존재하지 않습니다.
503 – 서버 시간이 초과되었습니다.
이 문서에서는 웹 페이지 요청 상태는 다음과 같습니다.
방법 1, 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 함수의 간단한 패키지이지만 크롤링에 성공합니다. 비율이 매우 높아서 스누피 사용에 문제가 있을 때 주로 사용합니다. 5.0.0에서는 컨텍스트에 대한 지원이 추가되어 헤더 정보를 보내고 사용자 에이전트, 참조자 및 쿠키를 사용자 정의할 수도 있습니다. 5.1.0에는 파일의 일부만 읽을 수 있도록 offset 및 maxlen 매개변수가 추가되었습니다.
방법 2, snoopy.class.php 사용
스누피는 브라우저의 기능을 시뮬레이션하는 데 사용되는 PHP 클래스이며 웹 콘텐츠를 얻고 양식을 보낼 수 있습니다.
아아아아위 내용은 웹 페이지 요청 상태 코드를 가져오는 PHP의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!