= 400)) { $status = false; $errmsg = 'http_code='.$httpcode; } $usetime = round(curl_getinfo($ch, CURLINFO_TOTAL_TIME) * 1000); curl_close($ch); return ['status' => $status, 'errmsg' => $errmsg, 'usetime' => $usetime]; } public static function tcp($target, $port, $timeout) { if (!filter_var($target, FILTER_VALIDATE_IP) && checkDomain($target)) { $target = gethostbyname($target); if (!$target) return ['status' => false, 'error' => 'DNS resolve failed', 'usetime' => 0]; } $starttime = getMillisecond(); $fp = @fsockopen($target, $port, $errCode, $errStr, $timeout); if ($fp) { $status = true; fclose($fp); } else { $status = false; } $endtime = getMillisecond(); $usetime = $endtime - $starttime; return ['status' => $status, 'errmsg' => $errStr, 'usetime' => $usetime]; } public static function ping($target) { if (!function_exists('exec')) return ['status' => false, 'error' => 'exec函数不可用', 'usetime' => 0]; if (!filter_var($target, FILTER_VALIDATE_IP) && checkDomain($target)) { $target = gethostbyname($target); if (!$target) return ['status' => false, 'error' => 'DNS resolve failed', 'usetime' => 0]; } if (!filter_var($target, FILTER_VALIDATE_IP)) { return ['status' => false, 'error' => 'Invalid IP address', 'usetime' => 0]; } $timeout = 1; exec('ping -c 1 -w '.$timeout.' '.$target.'', $output, $return_var); $usetime = !empty($output[1]) ? round(getSubstr($output[1], 'time=', ' ms')) : 0; $errmsg = null; if ($return_var !== 0) { $usetime = $usetime == 0 ? $timeout * 1000 : $usetime; $errmsg = 'ping timeout'; } return ['status' => $return_var === 0, 'errmsg' => $errmsg, 'usetime' => $usetime]; } }