我继承了一段代码,该代码使用下面的fetchURL()
函数从网址中获取数据。我刚刚注意到,在检索完整页数据之前,它经常会返回feof()
。我尝试了一些测试,并使用CURL
file_get_contents()
每次都检索整页。
错误是间歇性的。 在9个调用中,有时7个将成功完成,有时只有4个.9个中的特定4个(它们只是通过更改查询字符串获取请求)总是成功完成。我试图颠倒顺序请求和相同的4个查询字符串仍然总是成功,而其余的有时工作,有时不工作
因此,“似乎”返回的数据可能与问题有关,但这是间歇性的,让我感到厌恶。在每种情况下返回的数据总是相同的(例如,每次我使用查询字符串?SearchString=8502806
进行调用时,返回的页面包含相同的数据),但有时整页由{{1}传递有时没有。
有没有人建议可能导致这种情况的原因?在这个主题上看到的大多数其他帖子都是关于fgets/feof
没有返回真实的相反问题。
feof()
答案 0 :(得分:2)
我发现该代码存在很多问题。
feof
。它会一直挂起,直到服务器关闭套接字,这不一定会在收到页面后立即发生。feof
可能会返回true
(套接字已关闭),而PHP的缓冲区中仍有一些数据。fgets
不一定会读取一行,它也只能返回一个字节(\r
,然后下一次调用你可能会得到\n
)为什么不直接将代码转换为使用cURL或file_get_contents?
答案 1 :(得分:-1)
这听起来像是一个超时问题。请参阅PHP手册中的stream_set_timeout()。