Проверка сервиса fsockopen()
Я пытаюсь проверить службу на порту 9998. Для этого я использую функцию fsockopen().
Как это:
$host = "1.1.1.1";
$port = "9998";
$checkconn = fsockopen($host, $port, $errno, $errstr, 1);
if($checkconn >= 1){
echo 'ok';
} else {
echo "$errstr";
}
Он всегда возвращает "Connection Timed Out - 110", но порт открыт, и там работает служба.
Если я изменяю порт (например, 80), он возвращается успешно, но почему не на порт 9998?
1 ответ
Тайм-аут подключения 1 секунда не очень длинный. Сетевая задержка может быть достаточной для запуска, даже если хост / порт действителен. Я бы предложил использовать не менее 2,5 - 5 секунд.
Кроме того, вы должны проверять результат fsockopen()
за FALSE
вместо < 1
знать, когда это не удается.
Попробуй это:
$host = "1.1.1.1";
$port = "9998";
$checkconn = fsockopen($host, $port, $errno, $errstr, 5);
if(!$checkconn){
echo "($errno) $errstr";
} else {
echo 'ok';
}