首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“如何在socket_connet中不出现php错误的情况下知道‘服务器是活动的还是不活动的’”

“如何在socket_connet中不出现php错误的情况下知道‘服务器是活动的还是不活动的’”
EN

Stack Overflow用户
提问于 2019-06-15 16:06:40
回答 1查看 190关注 0票数 0

我正在开发一个基于codeigniter-3框架的皮重web应用程序,我必须将它连接到一个websocket上,如果服务器在线,一切正常,但是如果服务器离线,php错误就会发生。

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

代码语言:javascript
复制
$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。我无法提供图片或链接,因为我的声誉很低。)

EN

回答 1

Stack Overflow用户

发布于 2019-06-25 10:10:49

如果没有建立连接,socket_connect也就是$suck将为false。在编程中,总是尝试一些东西并检查错误,而不是寻找有效的机制(比如ping)。

在没有检查$suck是否为真的情况下,不要读取socket_read

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56608582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档