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

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

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

764

主题

778

帖子

3万

积分

董事

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

积分
32970
发表于 19-3-27 22:28:18 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                目前附件模块虽然已经经过了优化,但是在对于附件下载两比较大的网站,还是会造成服务器内存的过多使用,所以整理了一下两种改动,一种是针对系统自带远程附件的改动,另外一种是对于使用了 NFS 作为附件存储的改动。
  e# l; @$ H1 ?
/ X0 ]- K) _  i1 E( l0 y1.对于远程附件的修改方法:" T: @) n, R2 V) i' b  a0 Q, V3 T' K2 R
打开:sourcemoduleforumforum_attachment.php 找到:
) y/ I. p! a* H5 D9 m8 _
  1. if(!@readfile($_G['setting']['ftp']['attachurl'].'forum/'.$file)) {
复制代码

7 z+ s: v7 V  a4 n修改为:% z' h$ I5 R& u8 F. _0 M) h* o! |
  1. if(!@fread($_G['setting']['ftp']['attachurl'].'forum/'.$file,100)) {
复制代码
# r8 E/ Z: N( }( k3 R
即可减轻远程附件对服务器内存的占用。
. w2 B! j  Z) x2 \0 h6 d
4 Q! A; ~, ?, `2.对于使用了NFS附件的修改方法. F' ^, H+ l" {* S9 n1 {
首先需要对 NFS 的附件目录给一个域名,能够保证该域名能访问到 附件目录的文件,同时从NFS上做好3 _3 w3 \5 T$ p7 C! M" @
防盗链/ C2 N9 F- D& r# c, v
的设置。
$ `2 ]5 p7 w! |  ~# Q& z3 o% t4 E
然后修改 configconfig_global.php 文件:# o7 ~1 t# Z8 l9 E3 e- ]: |. w; ^
  1. // -------------------------  CONFIG DOWNLOAD  -------------------------- //1 ?2 |. H+ E! L7 x  ]3 ^
  2. $_config['download']['readmod'] = 2;* Y9 `( d, B/ X) f6 O4 l& {
  3. $_config['download']['xsendfile']['type'] = '0';+ Y- W9 E" @. s/ `
  4. $_config['download']['xsendfile']['dir'] = '/down/';
复制代码
+ |( I# {6 H1 J7 C( x
一段修改为:
! W5 G0 l( \' P, z$ e) t
  1. // ------------------------- CONFIG DOWNLOAD -------------------------- //4 `2 Z: @$ E8 z# F# P6 m
  2. $_config['download']['readmod'] = 2;
    . @" Z7 F( c& o" }! i" j5 J
  3. $_config['download']['xsendfile']['type'] = '4';
    " ~3 M: f2 T; N( r0 a
  4. $_config['download']['xsendfile']['dir'] = '/down/';, U+ T9 d6 _7 E/ e" e
  5. $_config['download']['xsendfile']['remoteurl'] = 'xxxxxxxx';  //NFS 能够访问到底附件目录,请先测试能访问附件例如 http://img.discuz.net/data/attachment/forum/
复制代码
) k: m2 k, h" r6 `. `+ d" n
然后修改文件:sourcemoduleforumforum_attachment.php 找到:
, }; a% ?* p1 z* e0 [# r
  1. case 3: $cmd = 'X-Sendfile'; $url = $filename; break;
复制代码
5 ?# @# k& j, D! x) V5 n, C$ k
增加:
( b% _1 i$ `6 W7 |
  1. case 4: $cmd = 'location'; $url = $xsendfile['remoteurl'].$attach['attachment'];break;
复制代码

; r0 m2 W1 ?8 z这样便做到了附件流量的分流~~减轻了 web 服务器的负载。
) W+ p1 H( d- k) u6 x7 t
0 Z& a8 w) E0 a. M7 k+ R3 O$ w- v, @            

0

主题

4

帖子

20

积分

1°伸手党

Rank: 2

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

使用道具 举报

网站简介

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