腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

Discuz! 简单改动减轻附件前端负载

1
回复
934
查看
[复制链接]

761

主题

775

帖子

3万

积分

董事

Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72

积分
32840
发表于 19-3-27 22:28:18 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                目前附件模块虽然已经经过了优化,但是在对于附件下载两比较大的网站,还是会造成服务器内存的过多使用,所以整理了一下两种改动,一种是针对系统自带远程附件的改动,另外一种是对于使用了 NFS 作为附件存储的改动。. g( s- t  R2 i  [$ d# [" v
( D' w4 V& F  A8 o
1.对于远程附件的修改方法:, a  O. B' ~  Q$ W
打开:sourcemoduleforumforum_attachment.php 找到:
2 v( d6 n3 J2 g! \3 \
  1. if(!@readfile($_G['setting']['ftp']['attachurl'].'forum/'.$file)) {
复制代码
: T: u& x& B2 {' ^
修改为:
4 x7 s7 }4 j+ T: D
  1. if(!@fread($_G['setting']['ftp']['attachurl'].'forum/'.$file,100)) {
复制代码

# L: [2 |+ l' b! L3 _* U3 a即可减轻远程附件对服务器内存的占用。0 n( C, k" ~$ _! B- Y
; h: @+ h7 W# R+ F" Q1 x3 z" r
2.对于使用了NFS附件的修改方法
% z" ^+ ^& U" m- t首先需要对 NFS 的附件目录给一个域名,能够保证该域名能访问到 附件目录的文件,同时从NFS上做好- o3 ^9 r7 R6 M. H1 g- z8 Z
防盗链% G# E3 F) v* A- z( l) m" s: v7 h
的设置。
/ @8 c& n6 E* f
8 `7 e. K# R9 F" w2 I9 ]然后修改 configconfig_global.php 文件:9 g# V8 v9 I3 Z2 Q' r0 x$ G. a6 ^
  1. // -------------------------  CONFIG DOWNLOAD  -------------------------- //9 y7 W# o& d) \
  2. $_config['download']['readmod'] = 2;: ~2 K& X3 n: r/ u$ v8 L" u
  3. $_config['download']['xsendfile']['type'] = '0';9 i& W- @7 I. k- ?
  4. $_config['download']['xsendfile']['dir'] = '/down/';
复制代码

: l( W4 o' c8 F5 B一段修改为:. U2 c2 W$ l& n( h6 ]
  1. // ------------------------- CONFIG DOWNLOAD -------------------------- //
    2 r5 `. v0 E7 P3 f" f& \
  2. $_config['download']['readmod'] = 2;
    ; ^# f2 o- H/ Q" m
  3. $_config['download']['xsendfile']['type'] = '4';8 n6 r  W5 J  F
  4. $_config['download']['xsendfile']['dir'] = '/down/';+ Y# u6 k$ t, @- w# ?  g
  5. $_config['download']['xsendfile']['remoteurl'] = 'xxxxxxxx';  //NFS 能够访问到底附件目录,请先测试能访问附件例如 http://img.discuz.net/data/attachment/forum/
复制代码
6 R, G5 `3 e1 o
然后修改文件:sourcemoduleforumforum_attachment.php 找到:
' U0 b2 B- K& j/ F
  1. case 3: $cmd = 'X-Sendfile'; $url = $filename; break;
复制代码

( \6 a5 [7 i/ K; P0 A5 D0 A增加:% l: R+ Q& M" S1 _' m4 v1 ~. U$ o3 j
  1. case 4: $cmd = 'location'; $url = $xsendfile['remoteurl'].$attach['attachment'];break;
复制代码

) I( p- d6 M9 A5 H5 T( U这样便做到了附件流量的分流~~减轻了 web 服务器的负载。8 `# }) Z$ Z( Y
! X' F" V' p" u. J( W
            

0

主题

4

帖子

20

积分

1°伸手党

Rank: 2

积分
20
发表于 19-9-20 12:48:02 | 显示全部楼层         
不知该说些什么。。。。。。就是谢谢
回复

使用道具 举报

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除