Если страница недоступна, например, не существует вообще, то функции fopen или fsockopen работают бесконечно долго, не возвращая вообще ничего (задание таймаута не помогает). Это происходит на Windows Server 2003. Можно ли это как-то побороть? Возможно, где-то стоит ошибочная настройка в php или Apache.
делай проверку, например: PHP: <?php if(file_exists('filename')) fopen('filename','a+'); else fopen('filename','W'); ?> В этом случае создаётся файл, или прописывай PHP: <?php fopen() or die("сообщение, в случае ошибки"); ?> В этом случае будет выводить сообщение.
marcuss Ты о чем? Xavier Teodonius, а ты как таймаут выставлял? Вообще, код приведи. Если у тебя таймаут чтения/записи, их нужно через контекст потока выставлять. А тот параметр, что есть у fsockopen - это именно таймаут соединения.
Горбунов Олег Подключение в классе реализовано, я весь код приводить не буду, только часть с fsockopen'ом, думаю, все понятно будет: Код (Text): if (($this->_fp = fsockopen($host, $port, $this->errno, $this->error_string, $this->socket_connection_timeout)) === false) return $this->_trigger_error("Не удалось установить подключение через сокет"); Так вот, скрипт не выполняется дальше fsockopen'а. Т.е. на return мы не попадаем.