【问题标题】:PHP's file_get_contents not returning until remote servers' keep-alive limit is exceededPHP file_get_contents 在超过远程服务器的保持活动限制之前不会返回
【发布时间】:2008-10-09 09:23:28
【问题描述】:
从一个 apache 服务器 file_get_contents 立即返回一个 url 的内容。在另一个 apache 服务器上,file_get 内容不会返回相同 url 的内容,直到托管该 url 的服务器的保持活动限制已过期。 2 个 php 服务器正在检索相同的 url,但通过不同的网络路由。什么可能导致一个 php 安装在返回之前等待远程保持活动限制?
【问题讨论】:
标签:
php
html
apache
networking
【解决方案1】:
手动使用fopen 会更快吗?
与其花几个小时找出为什么 file_get_contents 不起作用,不如换掉它。
如果fopen 没有更快,则可能是配置或文件系统问题。如果速度更快,则可能是 php.ini 问题。
【解决方案2】:
我并不完全熟悉那个 php 函数,但是我看到了由于输出没有被刷新回流而导致的类似情况。我相信一旦数据达到一定大小或当流关闭时,数据通常会被刷新到流中。在您使用的每个 php 服务器上,此大小的配置可能不同,从而导致不同的效果。在调用 file_get_contents 之后直接调用 flush() 可能是值得的。希望这会有所帮助。