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标头自行完成连接.
标签:file-get-contents,fopen,bandwidth,php 来源: https://codeday.me/bug/20191121/2052854.html