gpt4 book ai didi

error-handling - “How to know if ‘server is a live or not’,而在socket_connet中没有收到PHP错误”

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

我正在基于Codeigniter-3框架开发一个去皮Web应用程序,该应用程序必须连接到Websocket,如果服务器处于联机状态,则一切正常,但是如果服务器处于脱机状态,则会发生php错误。

我在php中使用了exec函数,这使我可以ping服务器并根据返回数据包丢失确定服务器是否打开。但有时它不会工作。它允许它通过,即使服务器关闭,也有可能发生1/20的机会(此静态仅基于实验)。

$host = "192.168.1.100"; 
$port = 6001;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
$suck = socket_connect($sock, $host, $port) or die("error: could not connect to host\n");
$tare = socket_read($sock, 1024);
$tare = trim($tare);
$tar_array = explode(" ", $tare);
for ($i=1; $i < 16 ; $i++)
{
$real_tare = $real_tare + intval($tar_array[$i]);
}
echo $real_tare;

我不希望收到巨大的错误消息,但是我想写一个小的error_handler来将服务器关闭一小段,显示 err lan,而不是停止所有应用程序的php错误。
(PS。由于信誉低下,我无法提供图片或链接。)

最佳答案

如果未建立连接,则socket_connect aka $suck将为false。总是在编程中尝试一些操作并检查错误,而不是寻找有效的机制(例如ping)。

在未首先检查socket_read为真之前,请勿阅读$suck

$suck发生之前,使用error_handler分支到较小的socket_read

关于error-handling - “How to know if ‘server is a live or not’,而在socket_connet中没有收到PHP错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608582/

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