我正在运行多个流量较高的网站,根据要求,所有图像均通过下载image.php?id=IMAGE_ID_HERE
。
如果您以前曾经这样做过,您就会知道该文件将读取文件图像并使用特殊标头将其回显到浏览器。
我的问题是,服务器上的负载非常高(150-200)并且 TOP 命令显示 image.php 的多个实例,因此 image.php 运行缓慢!
问题可能是fopen
在将图像发送到客户端之前将其加载到内存中。如何读取文件并直接传递?
感谢你们
UPDATE
优化代码并尽可能使用缓存后,请创建 CDN 。几个服务器、同步方法、负载均衡器,无需再担心请求:)
fopen 和 file_get_contents 几乎等效
为了一致地加速页面加载,您可以使用
http://www.php.net/fpassthru http://www.php.net/fpassthru
或者,甚至更好
http://www.php.net/readfile http://www.php.net/readfile
使用这些函数,可以直接逐字节打印文件内容
与 file_get_contents 相反,例如,您将整个数据存储在变量中
$var = file_get_contents();
因此,为了使这些正常工作,您需要在提供图像的页面中禁用输出缓冲(否则会使 readfile() 毫无意义)
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)