gpt4 book ai didi

php - 使用@抑制PHP错误和警告不适用于set_error_handler

转载 作者:行者123 更新时间:2023-12-03 12:08:47 27 4
gpt4 key购买 nike

我正在尝试连接到TCP服务器,当服务器正常工作时,我应该为true;当服务器正常工作时,我应该为false。

但是,我得到的不是假的:

    Error: [2], fsockopen(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in /website/classes/Main.php on line 2874 

我的代码:
public function checkInternetConnection(){

$connected = @fsockopen("www.gossssogle.com", 80);

if (!$connected){
return false;
}else{
fclose($connected);
return true;
}
return $is_conn;

}

我猜我正在使用set_error_handler的问题,所以@在函数名之前不起作用
set_error_handler('customError');

错误处理程序功能
    function  customError($errno, $errstr, $errfile, $errline, $errcontext){
$error_number = rand(1111 , 99999999);
$message = "Error Number:" . $error_number . "\r\n";
$message .= date("Y-m-d H:i:s")."\r\n";
$message .= "Error: [" . $errno ."], " . "$errstr in $errfile on line $errline \r\n, ";
$message .= "Variables:" . print_r($errcontext, true) . "\r\n";



error_log($message, 3, log_file);

throw new internalError();
}

问:
如何检查连接状态而不是出现PHP错误?

最佳答案

我所做的是忽略套接字发生错误的情况下引发异常。

function  customError($errno, $errstr, $errfile, $errline, $errcontext){
$error_number = rand(1111 , 99999999);
$message = "Error Number:" . $error_number . "\r\n";
$message .= date("Y-m-d H:i:s")."\r\n";
$message .= "Error: [" . $errno ."], " . "$errstr in $errfile on line $errline \r\n, ";
$message .= "Variables:" . print_r($errcontext, true) . "\r\n";

if (!stristr($message, 'stream_socket_client'))
error_log($message, 3, log_file);
else return false;

throw new internalError();
}

它正在工作,但我想应该有一个更好的解决方案。

关于php - 使用@抑制PHP错误和警告不适用于set_error_handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com