discuz! 简单改动减轻附件前端负载
2016-06-18来源:易贤网

目前附件模块虽然已经经过了优化,但是在对于附件下载两比较大的网站,还是会造成服务器内存的过多使用,所以整理了一下两种改动,一种是针对系统自带远程附件的改动,另外一种是对于使用了 nfs 作为附件存储的改动。

1.对于远程附件的修改方法:

打开:sourcemoduleforumforum_attachment.php 找到:

if(!@readfile($_g['setting']['ftp']['attachurl'].'forum/'.$file)) {

修改为:

if(!@fread($_g['setting']['ftp']['attachurl'].'forum/'.$file,100)) {

即可减轻远程附件对服务器内存的占用。

2.对于使用了nfs附件的修改方法

首先需要对 nfs 的附件目录给一个域名,能够保证该域名能访问到 附件目录的文件,同时从nfs上做好

防盗链

的设置。

然后修改 configconfig_global.php 文件:

// ------------------------- config download -------------------------- //

$_config['download']['readmod'] = 2;

$_config['download']['xsendfile']['type'] = '0';

$_config['download']['xsendfile']['dir'] = '/down/';

一段修改为:

// ------------------------- config download -------------------------- //

$_config['download']['readmod'] = 2;

$_config['download']['xsendfile']['type'] = '4';

$_config['download']['xsendfile']['dir'] = '/down/';

$_config['download']['xsendfile']['remoteurl'] = 'xxxxxxxx'; //nfs 能够访问到底附件目录,请先测试能访问附件例如 http://img.discuz.net/data/attachment/forum/

然后修改文件:sourcemoduleforumforum_attachment.php 找到:

case 3: $cmd = 'x-sendfile'; $url = $filename; break;

增加:

case 4: $cmd = 'location'; $url = $xsendfile['remoteurl'].$attach['attachment'];break;

这样便做到了附件流量的分流~~减轻了 web 服务器的负载。

推荐信息