为什么 fgets 在 wamp 上挂在某个 url 上,但在 mamp 上没问题?
题
我有一个使用 fopen 和 fgets 读取 RSS 提要的脚本。
当尝试在以下位置喂食时: http://rss.fok.nl/feeds/nieuws 我的脚本挂起,直到达到 PHP 的 max_timeout 。
事情是:
- 直到今天它都运行良好(在同一个网址上)。
- 它仍然可以在我的开发 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”或缺乏“feof”有关......
其他提示
也许尝试使用wireshark调试您的连接(空灵). 这应该给你理由。也许网络服务器由于用户代理而阻止了您的请求。
您可以在 Windows 机器上手动下载该文件吗?
不隶属于 StackOverflow