RulCom
Новичок
Timeout в fsockopen или как проверить коннект с сервером
Доброго всем времени суток.
Может, кто даст совет, по следующей проблемке. Задача состоит в следующем: необходимо проверять на работоспособность сервера в сети. Т.е. включен ли некоторый сервер (например ftp) на известном компьютере. Для проверки этой работоспособности, в данной постановке задачи, достаточно просто открыть соединение по 21 порту. Так вот как это можно организовать?
Сразу отмечу, что не подходят пинг и ftp_connect. Первый, из-за брандмауэров и не только, вообще не является каким-либо показателем, т.к. не пройдет на 50% включенных серверов. Второй слишком медленный, время соединения иногда достигает 20 сек, это не приемлемо.
Приемлемое время на проверку одного хоста не более 1 сек!
Я пробовал применить fsockopen. Этот вариант подходит полностью, кроме одного, у fsockopen не работает timeout Т.е. делаю примерно так: fsockopen($name,21,$errno, $errstr, 1). Если сервак включен, то все ОК. Но если выключен, то функция ждет ответа 9 сек, а не 1, как указано в timeout'е.
Попробовал заюзать CURL, но блин, не хватило ума разобраться, как просто открыть соединение по известному порту, без дальнейшей передачи каких либо данных. Т.е. ftp_connect через CURL я получил, но как я уже говорил, это не подходит.
Подскажите, как все-таки врубить timeout в fsockopen или заюзать CURL? Либо, может, есть другие способы решения поставленной задачи?
Доброго всем времени суток.
Может, кто даст совет, по следующей проблемке. Задача состоит в следующем: необходимо проверять на работоспособность сервера в сети. Т.е. включен ли некоторый сервер (например ftp) на известном компьютере. Для проверки этой работоспособности, в данной постановке задачи, достаточно просто открыть соединение по 21 порту. Так вот как это можно организовать?
Сразу отмечу, что не подходят пинг и ftp_connect. Первый, из-за брандмауэров и не только, вообще не является каким-либо показателем, т.к. не пройдет на 50% включенных серверов. Второй слишком медленный, время соединения иногда достигает 20 сек, это не приемлемо.
Приемлемое время на проверку одного хоста не более 1 сек!
Я пробовал применить fsockopen. Этот вариант подходит полностью, кроме одного, у fsockopen не работает timeout Т.е. делаю примерно так: fsockopen($name,21,$errno, $errstr, 1). Если сервак включен, то все ОК. Но если выключен, то функция ждет ответа 9 сек, а не 1, как указано в timeout'е.
Попробовал заюзать CURL, но блин, не хватило ума разобраться, как просто открыть соединение по известному порту, без дальнейшей передачи каких либо данных. Т.е. ftp_connect через CURL я получил, но как я уже говорил, это не подходит.
Подскажите, как все-таки врубить timeout в fsockopen или заюзать CURL? Либо, может, есть другие способы решения поставленной задачи?