PHP fopen和file_get_contents限制了下载速度,为什么?

我正在尝试使用PHP检索远程文件(6MB文本文件),并且我注意到fopen的速度限制为100KB / s,file_get_contents的速度限制为15KB / s.

服务器上带有wget的Howewer,速度超过5MB / s.

是什么控制这些速度?

我用nethogs检查了实时速度.

解决方法:

wget非常有用,它可以镜像站点,它实际上可以解析页面中的链接并下载文件.

file_get_contents不会发送“连接” HTTP标头,因此远程Web服务器默认情况下认为这是一个保持活动的连接,并且直到15秒后才关闭TCP流(这可能不是标准值-取决于服务器配置).

如果HTTP有效负载长度达到响应Content-Length HTTP标头中指定的长度,则普通浏览器会认为页面已完全加载. File_get_contents不会这样做,这很可惜.

因此,如果您想知道解决方案,则为:

$context = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
file_get_contents("http://www.something.com/somepage.html",false,$context);

事情只是告诉下载完成后远程Web服务器关闭连接,因为file_get_contents不够智能,无法使用响应Content-Length HTTP标头自行完成连接.

上一篇:文件 操作 C语言


下一篇:作业3:读入一个24bitRGB文件,输出该数据文件中R、G、B三个分量的概率分布示意图和熵。