Почему fgets зависает на определенном URL в wamp, но работает нормально в mamp?

StackOverflow https://stackoverflow.com/questions/567051

  •  05-09-2019
  •  | 
  •  

Вопрос

У меня есть скрипт, который читает RSS-каналы с помощью fopen & fgets.

При попытке подачи на: http://rss.fok.nl/feeds/nieuws мой скрипт зависает до тех пор, пока не будет достигнуто максимальное время ожидания PHP.

Дело в том, что:

  • это работало отлично (по тому же URL-адресу) до сегодняшнего дня.
  • он все еще работает на моем сервере mac MAMP для разработки.
  • это не работает на производственном сервере WAMP (php 5.2.8)

Я попробовал fread, но безуспешно.

есть какие-нибудь идеи?

Это было полезно?

Решение

Ну, это скорее обходной путь, чем ответ, но мне пришлось прибегнуть к нему.Я использовал следующее, чтобы переключиться на curl, используя эту функцию:

function curl_get_file_contents($URL)
{
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $URL);
    $contents = curl_exec($c);
    curl_close($c);

    if ($contents) return $contents;
        else return FALSE;
}

Я нашел это здесь: http://il.php.net/manual/en/function.file-get-contents.php

кстати, на случай, если кто-то захочет копнуть глубже, согласно другим сообщениям о зависании fgets, похоже, это как-то связано с 'feof' или его отсутствием...

Другие советы

Возможно, попробуйте отладить ваше соединение с помощью wireshark (Эфирный). Это должно подсказать вам причину.Возможно, веб-сервер блокирует ваши запросы из-за пользовательского агента.

Можете ли вы загрузить файл вручную на компьютер с Windows?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top