让Discuz! X2 使用 Nginx 的 sendfile 功能
传统的Web服务器在处理文件下载的时候,总是先读入文件内容到应用程序内存,然后再把内存当中的内容发送给客户端浏览器。这种方式在应付当今大负载网站会消耗更多的服务器资源。sendfile是现代操作系统支持的一种高性能网络IO方式,操作系统内核的sendfile调用可以将文件内容直接推送到网卡的buffer当中,从而避免了Web服务器读写文件的开销,实现了“零拷贝”模式。
Nginx 对 sendfile 有着良好的支持,Discuz! X2 也支持把附件通过 sendfile 发给客户,对于资源下载类的论坛,能明显减少PHP读取附件的资源占用。
1,先在Nginx的配置文件里面检查是否有 sendfile off 配置,如果有,那么把sendfile 改为on
2,打开论坛的配置文件config/config_global.php ,找到$_config[‘download’][‘xsendfile’][‘type’] =,把0改为1
找到$_config[‘download’][‘xsendfile’][‘dir’] = ‘/down/’;
如果论坛放在根目录,那么把/down/改为/data/attachment/forum/
如果论坛放在bbs目录,那么把/down/改为/bbs/data/attachment/forum/
以此类推。
本教程基于用户手册的Nginx配置部分编写,实际测试有效。地址http://faq.comsenz.com/userguide/x/nginx.html