牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP获取HTTP状态和响应时间

创建时间:2013-09-10 投稿人: 浏览次数:2394
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 ";     $out .= "Host: {$host} ";     $out .= "Connection: Close ";     $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.ds(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); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。