更快的fopen或file_get_contents?

Ron*_*ero 11 php fopen file-get-contents

我正在运行多个流量高的网站,作为一项要求,所有图像都是通过下载的image.php?id=IMAGE_ID_HERE.如果您之前曾经这样做过,那么您知道该文件将读取文件图像并使用特殊标题将其回显到浏览器.

我的问题是,服务器上的负载非常高(150-200)并且TOP命令显示了image.php的多个实例,因此image.php运行缓慢!

问题可能是fopen在将图像发送到客户端之前将图像加载到内存中.如何读取文件并直接传递?

感谢你们


UPDATE

优化代码后,尽可能使用缓存,创建CDN.几个服务器,同步方法,负载均衡器,不再需要担心请求:)

小智 16

fopen和file_get_contents几乎相同

加快可以使用的页面加载速度

http://www.php.net/fpassthru

或者,甚至更好

http://www.php.net/readfile

使用这些功能,文件内容直接打印,每字节字节

例如,与file_get_contents相反,您将整个数据存储在变量中

$var = file_get_contents();
Run Code Online (Sandbox Code Playgroud)

所以,为了使这些工作正常,你需要在提供图像的页面中禁用输出缓冲(否则会使readfile()无意义)

希望这可以帮助!

  • 如果你在使用fpassthru后仍然遇到serverload问题并且你能够安装apache模块,你可以尝试mod_xsendfile看到这个链接了解更多信息http://codeutopia.net/blog/2009/03/06/sending-files-better -apache-mod_xsendfile及PHP / (2认同)