= 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]; } }