為 php 加速 (eaccelerator)

更新時間: 2009-05-21

介紹
 

eAccelerator 原理是將 "編譯" 了的 PHP scripts ,

以壓縮形式儲存在 shared memory, 這編譯是指語法檢查及進行代碼優化.

由此大大減少由 HardDisk 的存取時間, 以及編譯 script 的時間.

目錄

- 介紹
- 事前準備
- 編釋過程
- 安裝
- 設定
- 個別 Virtualhost 停用 cache
- shared memory > 32mb 時

 


 

事前準備
 

apt-get install autoconf automake libtool m4

apt-get install php5-dev

!!! 注意 libapache2-mod-php5 包與 php5-dev 包的版本要一樣, 否則 apache 會啟動不了 ~
 


編釋過程:
 

執行 phpize

在源碼包目錄內

./configure --prefix=/usr

make

我們要的東西就是

/usr/src/eaccelerator-0.9.5.3/modules/eaccelerator.so

 


安裝:
 

將 eaccelerator.so 複製到 /usr/lib/php5/20060613+lfs 目錄內

在 /etc/php5/conf.d 目錄內建立 eaccelerator.ini 設定檔

內容如下:

#
# configuration for php eaccelerator module
#
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator/"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="0"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="60"
eaccelerator.shm_prune_period="180"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.allowed_admin_path="/var/www/datahunter.servehttp.com/eaccelerator/"

**建立緩衝目錄**

mkdir /var/cache/eaccelerator
chown www-data:www-data /var/cache/eaccelerator
chmod 660 /var/cache/eaccelerator

**建立控制台**

mkdir /var/www/datahunter.servehttp.com/eaccelerator

將 control.php 複製進去, 並改名 index.php

之後修改 control.php 內的密碼

 


設定:
 

大部份設定用 default 值都是相當理想,
只有以下幾個設定值得探討一下

eaccelerator.shm_size="16"
# 用多少 ram 在 cache, 單位是 mb

eaccelerator.compress_level="5"
# 壓縮的程度, default 是最高的 9

eaccelerator.check_mtime="0"
# 不檢查 php 檔有沒有被修改過

# 只有 shm 不夠時才會清除長時間無用過的 script

eaccelerator.shm_ttl="60"
#是指 > 60 sec 未用過的 script 才算舊

eaccelerator.shm_prune_period= "180"
#它是用來限制要隔多久才能清潔一次

 


個別 Virtualhost 停用 cache:
 

如果大家在個別的 Virtualhost 來以 php 開發網站,
那相信這站的 script 是會不斷改版的,
所以無謂 cache 佢地, 那停用 eAccelerator 都好應該.

那在 .htaccess 加入以下 config 就可以了

php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
 

 

 


shared memory > 32mb 時
 

如果你有充足的 ram 時, 而又想 cache 所有的 script

那當 eaccelerator.shm_size > 32mb 時, 大家要修改

/proc/sys/kernel/shmmax

以增大 shared memory 的可用量

 

Creative Commons license icon Creative Commons license icon