Проверка сервиса 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';
}
Другие вопросы по тегам