«Как узнать, является ли сервер активным или нет», не получая ошибку php в socket_connet » - PullRequest
0 голосов
/ 15 июня 2019

Я работаю над тарным веб-приложением, основанным на платформе codeigniter-3, которую я должен подключить к веб-сокету, все работает нормально, если сервер подключен к сети, но если сервер отключен, возникает ошибка php.

Я использовал функцию exec в php, это позволяет мне пропинговать сервер и, основываясь на потере возвращаемого пакета, определять, включен сервер или нет.Но иногда это не сработает.Это позволяет ему проходить, даже если сервер выключен, это имеет шанс 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. Я не мог предоставить изображение или ссылки из-за своей низкой репутации.)

1 Ответ

0 голосов
/ 25 июня 2019

socket_connect aka $suck будет ложным, если соединение не было установлено.Всегда в программировании пробуйте что-нибудь и проверяйте ошибку, а не ищите живые механизмы (например, ping).

Не читайте socket_read, не проверяя $suck верно вначале.

Используйте$suck, чтобы перейти к вашему меньшему error_handler до того, как socket_read произойдет.

...