웹사이트에 페이지를 표시하라는 요청이 서버로 전송되면(예: 사용자가 브라우저를 통해 페이지에 액세스하거나 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!