PHP 获取网站 HTTP 状态码、响应时间和状态信息代码示例
php/nfunction get_http_code($url='localhost', $port=80, $fsock_timeout=10){/n set_time_limit(0);/n ignore_user_abort(true);/n/n // 记录开始时间/n list($usec, $sec) = explode(' ', microtime(true));/n $timer['start'] = (float)$usec + (float)$sec;/n/n // 校验URL/n if(!preg_match('/^https?://///i', $url)){/n $url = 'http://'.$url;/n }/n // 支持HTTPS/n if(preg_match('/^https://///i', $url)){/n $port = 443;/n }/n/n // 解析URL/n $urlinfo = parse_url($url);/n if(empty($urlinfo['path'])){/n $urlinfo['path'] = '/';/n }/n $host = $urlinfo['host'];/n $uri = $urlinfo['path'] . (empty($urlinfo['query'])?'':$urlinfo['query']);/n/n // 通过fsock打开连接/n if(!$fp = fsockopen($host, $port, $errno, $error, $fsock_timeout)){/n list($usec, $sec) = explode(' ', microtime(true));/n $timer['end'] = (float)$usec + (float)$sec;/n $usetime = (float)$timer['end'] - (float)$timer['start'];/n/n return array('code'=>-1, 'usetime'=>$usetime, 'status'=>'Connection failed');/n }/n/n // 提交请求/n $status = socket_get_status($fp);/n $out = /'GET {$uri} HTTP/1.1/r/n/';/n $out .= /'Host: {$host}/r/n/';/n $out .= /'Connection: Close/r/n/r/n/';/n $write = fwrite($fp, $out);/n if(!$write){/n list($usec, $sec) = explode(' ', microtime(true));/n $timer['end'] = (float)$usec + (float)$sec;/n $usetime = (float)$timer['end'] - (float)$timer['start'];/n/n return array('code'=>-2, 'usetime'=>$usetime, 'status'=>'Request failed');/n }/n/n $ret = fgets($fp, 1024);/n preg_match('/http///d/./d/s(/d+)/i', $ret, $m);/n $code = $m[1];/n fclose($fp);/n/n list($usec, $sec) = explode(' ', microtime(true));/n $timer['end'] = (float)$usec + (float)$sec;/n $usetime = (float)$timer['end'] - (float)$timer['start'];/n/n return array('code'=>$code, 'usetime'=>$usetime, 'status'=>'Success');/n}/n/n// 测试代码/n$url = 'www.example.com';/n$port = 80;/n$fsock_timeout = 10;/n/n$result = get_http_code($url, $port, $fsock_timeout);/necho /'HTTP Code: /' . $result['code'] . /'//n/';/necho /'Response Time: /' . $result['usetime'] . /' seconds//n/';/necho /'Status: /' . $result['status'] . /'//n/';/n/n/n该代码演示了如何使用 PHP 代码获取网站的 HTTP 状态码、响应时间和状态信息。该代码使用 fsockopen 函数打开连接,发送 HTTP 请求,并解析返回的信息。该代码还包括了对 URL、端口和超时时间的处理,以及对连接失败和请求失败情况的处理。/n/n您可以在代码中修改待测试的 URL、端口和超时时间,并运行代码来查看结果。/n/n**注意:**该代码仅供参考,实际使用中可能需要根据您的具体需求进行调整。/n
原文地址: https://www.cveoy.top/t/topic/bxHD 著作权归作者所有。请勿转载和采集!