我在这里遇到问题,也许有人已经经历过这个问题。
系统控制器正在提供php下载,它从文件中读取信息并作为下载发送客户端。该系统运行良好。问题是速度总是很低,总是小于用户的300kb / se时间小于100kb / s。
服务器有100mbps链接6mbps免费和客户有,然后它应该以600kb / s下载。有东西拿着php的输出。我试过搜索apache的缓冲区,但在这个问题上没有找到任何内容。
有没有人知道可能会发生什么?
答案 0 :(得分:6)
PHP实际上不是为处理大文件而构建的。它必须将整个文件读入内存然后输出。听起来你通过PHP发送了合理数量的流量,如果100kb / s - 每个用户300kb / s太慢,通过类似readfile()
的东西这是一个坏主意。相反,我建议看一下mod_xsendfile
(如果你正在使用Apache)或它等同于你选择的web服务器(例如我更喜欢nginx,并且会使用XSendFile
来实现这一点。) p>
在PHP中,您可以这样做:header('X-Sendfile: ' . $file);
。服务器拦截标头,并发送该文件。它允许您使用PHP所做的好处,以及直接读取文件的Web服务器的速度。