За последние 24 часа нас посетили 31906 программистов и 1362 робота. Сейчас ищут 729 программистов ...

При недоступной странице fopen или fsockopen подвисает

Тема в разделе "PHP для новичков", создана пользователем Xavier Teodonius, 11 авг 2008.

  1. Xavier Teodonius

    Xavier Teodonius Активный пользователь

    С нами с:
    8 мар 2007
    Сообщения:
    65
    Симпатии:
    0
    Если страница недоступна, например, не существует вообще, то функции fopen или fsockopen работают бесконечно долго, не возвращая вообще ничего (задание таймаута не помогает). Это происходит на Windows Server 2003. Можно ли это как-то побороть? Возможно, где-то стоит ошибочная настройка в php или Apache.
     
  2. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    делай проверку, например:
    PHP:
    1. <?php
    2. if(file_exists('filename')) fopen('filename','a+');
    3. else fopen('filename','W');
    4. ?>
    В этом случае создаётся файл, или прописывай
    PHP:
    1. <?php
    2. fopen() or die("сообщение, в случае ошибки");
    3. ?>
    В этом случае будет выводить сообщение.
     
  3. Anonymous

    Anonymous Guest

    marcuss Ты о чем?
    Xavier Teodonius, а ты как таймаут выставлял?
    Вообще, код приведи. Если у тебя таймаут чтения/записи, их нужно через контекст потока выставлять. А тот параметр, что есть у fsockopen - это именно таймаут соединения.
     
  4. Xavier Teodonius

    Xavier Teodonius Активный пользователь

    С нами с:
    8 мар 2007
    Сообщения:
    65
    Симпатии:
    0
    Горбунов Олег
    Подключение в классе реализовано, я весь код приводить не буду, только часть с fsockopen'ом, думаю, все понятно будет:

    Код (Text):
    1.  if (($this->_fp = fsockopen($host, $port, $this->errno, $this->error_string, $this->socket_connection_timeout)) === false)
    2.          return $this->_trigger_error("Не удалось установить подключение через сокет");
    Так вот, скрипт не выполняется дальше fsockopen'а. Т.е. на return мы не попадаем.
     
  5. Anonymous

    Anonymous Guest

    Версия php какая?
     
  6. Xavier Teodonius

    Xavier Teodonius Активный пользователь

    С нами с:
    8 мар 2007
    Сообщения:
    65
    Симпатии:
    0
    PHP 4.4.7
    Apache 1.3.39
    Windows Server 2003 SP1
     
  7. Anonymous

    Anonymous Guest

    openssl стоит ?
     
  8. Xavier Teodonius

    Xavier Teodonius Активный пользователь

    С нами с:
    8 мар 2007
    Сообщения:
    65
    Симпатии:
    0
    Горбунов Олег
    Эмм, а что это это и как узнать, стоит или нет?
     
  9. Anonymous

    Anonymous Guest

    Xavier Teodonius, в phpinfo погляди
     
  10. Xavier Teodonius

    Xavier Teodonius Активный пользователь

    С нами с:
    8 мар 2007
    Сообщения:
    65
    Симпатии:
    0
    Горбунов Олег
    нет, openssl не установлен.