Тайм-аут функции PHP fopen? - PullRequest
0 голосов
/ 19 мая 2009

есть идеи, почему fopen будет тайм-аут для файла, если он находится на моем сервере, и я знаю, что URL-адрес правильный?

обновление: извините, я должен был упомянуть, что это в php. код:

fopen($url, 'r');

Это работает, если я укажу относительный путь к файлу, но не если $ url - это URL на моем сервере (но он работает для google.com). Спасибо за помощь.

Ответ Алайтника был верным. Проблема появляется только когда я получаю доступ к своим собственным файлам сервера через интерфейс Ethernet. Как я могу это исправить? Мне нужно иметь доступ к файлу через интерфейс Ethernet, потому что URL-адрес загружается динамически (он создается из WordPress CMS, поэтому URL-адрес технически не существует в виде файла на моем сервере)

Ответы [ 6 ]

4 голосов
/ 19 мая 2009

вы можете использовать ini_set ( 'default_socket_timeout', 2); перед открытием fopen $ url. Это фактически устанавливает тайм-аут соединения по умолчанию без ответа. Stream_set_timeout устанавливает время в потоке, которое устанавливается с помощью функций открытия fopn или сокета. Попробуйте это может быть полезно для вас.

3 голосов
/ 19 мая 2009

Похоже, что вы пытаетесь загрузить файл с вашего собственного сервера с использованием протокола HTTP из программы, запущенной на этом же сервере?

В этом случае проблема тайм-аута может быть связана с веб-сервером или конфигурацией сети. Тайм-ауты обычно происходят только потому, что:

  1. серверу действительно требуется много времени, чтобы отправить ответ, или
  2. TCP-соединение блокируется

Например, возможно, ваши локальные правила брандмауэра разрешают доступ к www.example.com только в том случае, если эти запросы поступают из интерфейса Ethernet, но локально установленное соединение будет пытаться пройти через интерфейс обратной связи.

1 голос
/ 19 мая 2009

возможно ваш "allow_url_fopen" установлен на "Off" проверьте файл php.ini или phpinfo ()

0 голосов
/ 10 марта 2011

Мне понадобилось много времени, чтобы решить эту проблему, но здесь я нашел это, благодаря Альнитаку. Открытие файла с localhost в URL-адресе вместо имени хоста - вот что помогло мне.

0 голосов
/ 19 мая 2009

Проверьте комментарии к документации fopen . Там много золота.

0 голосов
/ 19 мая 2009

Если вы пытаетесь получить HTML-код URL, я предлагаю использовать curl вместо fopen.

fopen лучше всего использовать с локальными файлами, потому что он не «знает», как справляться с особенностями сетевого ресурса.

...