мне нужно проверить, доступен ли удалённый сайт, в течение максимум двух секунд. в частности, наблюдаю часто что висит сайт free.rcast.pro а с ним и висит мой сервер, когда использую рекомендованную функцию проверки доступности: Код (Text): function check_domain_availible($domain) { $curlInit = curl_init($domain); curl_setopt($curlInit, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($curlInit, CURLOPT_HEADER, true); curl_setopt($curlInit, CURLOPT_NOBODY, true); curl_setopt($curlInit, CURLOPT_RETURNTRANSFER, true); $response = @curl_exec($curlInit); curl_close($curlInit); if ($response) return true; return false; } if(check_domain_availible("http://free.rcast.pro/")){echo "доступен";} else{echo "недоступен";} какие есть еще способы, менее ресурсоемкие, более быстрые и с защитой от зависания сервера?
Не вижу ресурсоемкость. А вот если вызывать этот код много и часто, вы сами себе сделаете DDOS. Сдается мне, потому у вас все и висит, вы не ресурсы, а буфер забиваете.
return strpos(`ping free.rcast.pro`, 'Ответ')>0; Только проверьте, что на вашем хостинге это работает Это страшное колдунство
Допустим, ваши сайты физически на одной машине. Зачем проверять ИХ сайт в таком случае? Все равно что "если у соседа нет воды, то и у меня нет, пойду схожу к соседу, спрошу, есть ли у него вода, а то мне в душ надо".
ну, допустим, в бытовом плане я часто поступаю так, ну а по делу- сайты на разных машинах) и когда функция пытается проверить его доступность- мой сайт виснет)
Ааа. Ну тогда сайт не виснет. Ты просто не совсем понимаешь, что происходит. Ты посылаешь пакет с таймаутом 5 секунд. Если тот сайт лежит, твой скрипт будет ждать 5 секунд, пока не выйдет таймаут. Если ты посылаешь несколько пакетов, нужно по 5 секунд на каждый. Если ты не дождался и снова тыкаешь, жди заново. Тут не в ресурсоемкости дело, а в том, что ты таймауты ловишь и ждешь. Сервер при этом не нагружается ни капли, просто таймер тикает.