[文章作者:张宴 本文版本:v1.1 最后修改:2007.03.02 转载请注明出处:
http://blog.s135.com]
9 F. [+ M+ \* D. r; g( V( }1 m% E0 a4 W& M# K! E6 r
操作系统:Linux
" s5 I2 ~% c' x! X% w* d) e - f5 q: D2 L' T" C* `# i. a
一、安装eaccelerator-0.9.5(同时支持ZendOptimizer-3.2.2)
* S) U. G* |3 D; R+ @
# g( h. G. ]. A3 [ 1、首先安装ZendOptimizer-3.2.2
. ~# Y& d7 }1 Y6 Y' J: P7 g e
0 ?6 { T8 b1 u0 X5 {. m( v! R # wget
http://www.vista.ac.cn/linux/down/ZendOptimizer/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz; s- l9 f4 i; u0 H- }
# tar zxvf ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
! M( F1 p) P s5 _3 w
# cd ZendOptimizer-3.2.2-linux-glibc21-i386
! `% j9 @4 F1 H; S- J1 x # ./install.sh
- ^3 w. O; g' h2 I
/ F. R% S& X1 z 在Please specify the location for installing ZendOptimizer:提示后输入ZendOptimizer安装路径,例如/data/webserver/zend
2 \: E% h4 {3 N' C
在Confirm the location of your php.ini file:提示后输入php.ini文件所在目录,例如/data/webserver/php/etc
* x3 E; v+ B/ r- R/ b 在Specify the full path to the Apache control utility (apachectl):提示输入apachectl绝对路径,例如/data/webserver/apache/bin/apachectl
& ^# z% N- i; Y) L5 O
3 N& \8 h+ s5 E& f! @/ G, x) d
! n+ S3 l. U" k) t f4 ?5 \ 2、再安装eaccelerator-0.9.5加速软件
$ w6 p4 m5 g( S6 a$ J- @. s $ [0 k S' E" O* R
# wget
http://www.vista.ac.cn/linux/down/eaccelerator/eaccelerator-0.9.5.tar.bz2! I0 N. \* \* X4 F
# tar jxvf eaccelerator-0.9.5.tar.bz2
" T7 V, E& {' ^. @: X: a b A
# cd eaccelerator-0.9.5
# c* A* _* x" c( s, j y- ^
- h! w$ Y' h3 I! t 指定php所在路径:
; n z8 _. q" R4 i: L; p. X # export PHP_PREFIX="/data/webserver/php"
" [% b$ U5 h* p2 z( v # $PHP_PREFIX/bin/phpize
+ D& g+ X* {4 }$ p# Q/ b # ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
! ]' s/ N. J' @2 ~- O
# make
4 B& l0 T* J0 A+ f4 ~
# make install
- z7 T9 X; n" }6 Y9 G; e0 O
# Q; i9 u9 X" J5 ~- X7 _0 {- ]4 K 这时会将eaccelerator安装到php目录中,屏幕会显示eaccelerator.so所在路径,例如:
# B ?* Q. |' F( G Installing shared extensions: /data/webserver/php/lib/php/extensions/no-debug-zts-20060613/
) ?' U2 m- g, A4 ^# ? 记住这个路径。
0 e9 T* E. o. A! s5 J! Q
/ ]) b9 O# j1 Z' i1 C5 j2 T eaccelerator即可以安装为PHP扩展,也可以安装为zend扩展,以下安装为PHP扩展。
1 r) q/ M% K' j$ _
; N& j: D; }; C8 t( C: t, h 如果存在/etc/php.d目录,需要拷贝eaccelerator.ini到该目录下,然后修改缺省值。如果不存在,修改php.ini,在[zend]之前加入以下内容(注:必须放在[zend]之前):
# |' p: |' `; Y* a5 X 2 K/ u; Z% N+ I" l9 L
[eaccelerator]
9 ^( {0 M/ v9 V" I2 ?
extension="/data/webserver/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
" M9 Y# S/ l [7 y% v0 s eaccelerator.shm_size="32"
1 q1 c3 A) H! y5 J ~
eaccelerator.cache_dir="/data/cache/eaccelerator"
( O$ [, X t5 ~ eaccelerator.enable="1"
2 S/ n5 T9 D7 ]* ^ F eaccelerator.optimizer="1"
7 g. P$ W5 o' t eaccelerator.check_mtime="1"
# y3 {& p7 X; K7 g- z, n( Y eaccelerator.debug="0"
2 E$ T/ h7 p* g# X, N# ? eaccelerator.filter=""
4 T |* g7 e# A# G eaccelerator.shm_max="0"
- N$ ~6 ^4 O7 e' m
eaccelerator.shm_ttl="0"
. M0 \5 g7 v8 `3 K1 Q eaccelerator.shm_prune_period="0"
) r8 R2 }5 ?, b7 l1 l$ h
eaccelerator.shm_only="0"
+ E5 T) z. F' y$ p8 ^
eaccelerator.compress="1"
4 {# a. L1 l* x5 J. b9 S, \
eaccelerator.compress_level="9"
6 S5 _, M7 A" g6 O( } % l" P' a* u$ n& s: C
建立缓存目录:
7 F* E/ w* P) K5 S8 t2 z3 W
# mkdir -p /data/cache/eaccelerator
4 i3 ]" c. G; f3 E) f # chmod 0777 /data/cache/eaccelerator
4 o' d8 b8 U1 r% F/ l$ U: k$ {9 C
' L s. d( i' s5 L6 ], l) R 重启Apache:
9 z3 i4 E" J( _) w- g # service httpd restart
3 N+ k | t( [0 e/ f e
* e8 r, r' m2 p5 H6 C
3 a7 A r2 w0 z- A 3、检查ZendOptimizer和eaccelerator是否安装成功
9 L0 n* l2 [! Z' p8 H: @& z( ?
& v& G. h# Q) }$ l 创建一个phpinfo.php文件,内容如下:
2 |' p6 L: G+ _. C, j <?php
o; J& S) W9 G+ q4 a phpinfo();
7 E. x3 o3 K# l0 v0 \
?>
' I- B. ]5 H8 w: T3 ? 6 c% P9 Y& q: Y% n+ b0 q
将该文件放置到网站目录,在浏览器中访问,如果出现以下内容则安装成功:
# _) L7 W' L* T9 q9 i. p. ~ This program makes use of the Zend Scripting Language Engine:
1 @% c" }1 P- D
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
) x& i0 ]# |6 c# F- _$ L
with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
- F' ]4 m: ~/ u; k with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
! A3 d* V2 a$ X! X, l% T/ L0 f with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies
& T. O6 J' C- c2 d. i. \: A* W) p' R " s0 p1 f4 Z% m7 j
. A/ i9 Z+ c- u: L6 o2 s 2 h/ i% O* r5 D" N
二、eaccelerator配置信息详解(根据官方英文说明翻译)
/ Q5 V% M6 _, ^. f' R; i2 s
3 _; [ {/ x* `% l% l+ \ extension="/data/webserver/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
: ^7 z2 C. z$ t* Y) B) z
% o" [$ f# G% O7 f0 i2 n 解释:PHP扩展eaccelerator.so的路径。
# Q$ a& p6 A4 [' k - _: f9 S; M8 `
--------------------
* j) u+ ?6 U+ R/ k- V# Q* L. }
( W- u' u3 v; _2 v# I+ B) v eaccelerator.shm_size="32"
0 k* x- L+ H$ L$ N
5 y. ^7 \; z2 S+ B* t: A 解释:eaccelerator可使用的共享内存大小(单位为MB)。
) X2 \+ X! H2 _5 @3 \1 C3 [
! x' y% Q- G7 Y7 |( T* O$ ~ 在Linux下,单个进程的最大内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节),例如CentOS 4.4的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。
( M9 r" K* C ?
2 Z8 V- u7 z i: m% x& `
临时更改该值:
, ^4 |. Z4 E+ A* p; ~ # echo 字节数 > /proc/sys/kernel/shmmax
8 @, P1 g; N T' E7 Q$ m
9 G2 t+ M2 l- m8 y1 E) h
按照以上方法更改,在每次重启系统时,该值会被自动还原。如果想永久更改,可以修改/etc/sysctl.conf文件,设置:
( F/ `4 B* a/ _( D7 k4 w kernel.shmmax = 字节数
- D/ ^. E. W- A" _3 `; Q
3 G1 N- I6 ?& p
--------------------
$ B# J/ H8 V1 B! p( k" [) q; l3 Q
( w4 t/ S! v& C1 q F& r eaccelerator.cache_dir="/data/cache/eaccelerator"
0 V, ^1 |, y6 V1 A2 L0 }/ b ' ^3 e- ^2 y+ {% J
解释:缓存路径,可以使用命令mkdir -p /data/cache/eaccelerator创建该目录,然后使用命令chmod 0777 /data/cache/eaccelerator设置该目录权限为0777
; r0 D# P6 f% m0 V [- c! A ' ~( `! x4 U3 H% A! C8 K6 ]
--------------------
' V% Q8 @7 {# z6 `$ D* w* {
) Q+ P; z$ d: l* Y( x/ Z eaccelerator.enable="1"
$ I) }9 V- }+ @9 X3 T
/ ~9 M* {" }7 T6 H1 R 解释:打开或者关闭eaccelerator。"1"指打开,"0"指关闭。默认值为"1"。
; N& f% [( e. j7 P. z9 w% O+ @+ @ 0 |, E! B: ~$ ~$ I6 ]
--------------------
' |4 _& t% {. A , `2 Y; ?$ Y+ x* U. A! B
eaccelerator.optimizer="1"
4 j p; ]4 H, c3 ?- t8 G 7 h, e+ K7 R2 g _. q: E
解释:打开或者关闭代码优化,开启可以加快代码的执行速度。"1"指打开,"0"指关闭。默认值为"1"。
2 A& B+ z0 x1 c, a5 |/ F8 o4 k# Z. e 7 y f2 \ h+ b, z1 d0 \. ?
--------------------
8 q* `: y% ?6 |- s 0 K- i9 ]& f) n2 S+ |1 ^# W" [
eaccelerator.check_mtime="1"
# O4 l8 ^5 \+ `) \& R; U; g6 P/ ?0 E
% A2 u2 i2 |% \ 解释:当打开此项时,eaccelerator会在每次请求时检查php文件的修改时间,看其是否被修改过,这会耗费一点时间,如果php文件被修改过,eaccelerator会重新编译缓存该php文件。当关闭此项时,如果php文件被修改,则需要手工删除eaccelerator缓存,才能显示被修改的php文件。"1"指打开,"0"指关闭。默认值为"1"。
* @9 O1 \6 `' M4 l
5 Q+ c9 F; N9 u) {# E s9 ?
--------------------
+ m y( u0 @ H
* r d& ]7 @2 ]6 y/ e& {1 |! P3 p: A8 A3 _
eaccelerator.debug="0"
( q; B; t9 \/ y8 R/ g7 f/ a
& s* \8 \. }# x/ Y% k7 C8 _ 解释:打开或者关闭调试记录。当打开时,eaccelerator会将对一个缓存文件的每次请求都写进log。打开此项只对调试eaccelerator是否有BUG时有益处。"1"指打开,"0"指关闭。默认值为"0"。
* w9 @2 @0 H6 j% v
( G1 u) E$ {5 ^! w/ H% q" s% B --------------------
1 i1 M. \8 r( Z) ?) m1 w% \" U3 `7 T+ O
) y. R6 C3 z& Q# l$ d) I% Y
eaccelerator.filter=""
5 _2 C1 s- Q7 n7 y0 ? 5 N5 h' Z$ c# U$ \' j/ L
解释:决定哪些PHP文件应该被缓存。可以指定一个范围(比如"*.php *.phtml"),这样被指定的文件就会被缓存。如果该范围以!开头,被指定的文件就不会被缓存。默认值为"",表示缓存所有的PHP文件。
% H5 d* H+ d- k o
s" e9 l0 a- i, x+ R --------------------
2 e: R7 e$ q% }6 E$ u$ x) i 8 |5 u; ~/ S6 k# F- x
eaccelerator.shm_max="0"
8 m/ L% h& a/ {% o/ C9 a r
/ O+ O. Y6 N) f0 C1 |. W6 j: v
解释:一个用户使用例如eaccelerator_put之类的函数能够往共享内存中加载的最大数据。默认值为"0",表示不限制。(单位为字节)
, p9 c: B0 F* _6 i
8 o' {' E% ]% c9 \& C( b8 k --------------------
9 K! ?# x) y. y: D6 T
/ |+ v0 P J7 Y4 t* p eaccelerator.shm_ttl="0"
! I7 R& A1 ^" V/ G4 k
' i* H9 n4 }& h
解释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删除至少在shm_ttl秒之前没有被访问过的文件。默认值为"0",表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)
) W) P+ m# F: d
' [- H% L. d/ } --------------------
: o: c) w8 [ T
: `7 d: p0 i5 v0 P9 { eaccelerator.shm_prune_period="0"
8 O2 U @0 o( ]+ |) J
/ d! P# V0 ` g+ w1 r 解释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删所有旧脚本,前提是这个尝试在超过shm_prune_period秒之前被执行过。默认值为"0",表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)
# [! p5 _% F4 D) \ p0 K
- L* ?" m9 {4 K2 S6 h --------------------
. G: _$ _/ \3 V$ d $ x0 Z& q& t" a3 J1 ]
eaccelerator.shm_only="0"
- q0 `. b5 \* B- u 6 M/ \: u/ T6 w0 [9 X: R4 h
解释:打开或者关闭在磁盘上缓存编译过的脚本。这个参数对会话数据和内容缓存没有效果。默认值为"0",表示使用磁盘和共享内存来缓存。
* I- h" U9 p9 R% I9 O! G0 I9 p
% B9 }; _7 d6 W( f" s6 x2 D4 f --------------------
. Q& X1 u/ h& i. Y ! \ h. q: G( p3 I7 ~
eaccelerator.compress="1"
. Q$ z1 \) U8 F8 U* { * P$ K6 K7 d2 p. v
解释:打开或者关闭缓存内容压缩。"1"指打开,"0"指关闭。默认值为"1"。
5 X: i R; g7 O2 U
9 Z3 ?0 C1 t% m/ a/ ^
--------------------
* W) H" B. v) i) `. e$ e
. }) K7 q( X% J. w: s+ v
eaccelerator.compress_level="9"
7 Z+ T& H/ v ?' `* {; U# `
6 B. @( w g M- d 解释:内存压缩的级别。默认值为"9",表示最大压缩。
_9 R" F# c5 S! w( j; ]* i
9 g3 |9 F0 U$ B4 }3 `
6 Z: G' n' M d& E; B; K" Q
参考资料:
- e6 y1 G* z6 x' f' S8 p
1、Installing from source (
http://www.eaccelerator.net/wiki/InstallFromSource)% A) q% Y, E# w2 y, _7 Y, C0 n! W: g
2、eAccelerator settings (
http://www.eaccelerator.net/wiki/Settings)