Почему fgets зависает на определенном URL в wamp, но работает нормально в mamp?
Вопрос
У меня есть скрипт, который читает 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?