php本身是一種解釋型語言,在PHP程式運行過程需要用PHP解譯器去解釋,解釋過程需要經曆解釋-執行,這兩步驟.這種邊解釋邊執行的方式在速度上是比較慢的.zend引擎的出現,把php邊解釋邊執行的方式改為了先行編譯的方式,使得php在工作當中執行效率大大的提高了.
zend引擎其實也是一個php的解譯器,當使用者訪問php頁面的時候zend引擎先把php原始碼編譯成2進位格式opcode,緩衝在記憶體當中然後去執行2進位檔案.
XCache則是一款opcoude的緩衝器,zend引擎能把php來源程式編譯成opcode.當多個進程同時訪問一個來源程式時由於進程是獨立的,每個進程都要自己編譯一次,這就導致了重複編譯的產生.XCache能夠實現在記憶體中開闢一個緩衝空間,將任何進程編譯的opcode放在緩衝空間裡面,下次有進程需訪問同一個檔案就可以直接去緩衝空間去取省去編譯的步驟.當然像這樣的opcode緩衝器是有多種的,在linux2.6核心下,經過測試表明,XCache有較好的實踐經驗,其他在並發數增加以後效能衰減嚴重.
下面安裝XCache:
環境:CentOs6.4、PHP:php-5.6.8
XCache版本:xcache-3.2.0
1.執行 /usr/local/php/bin/phpize :phpize是為php增加擴充的工具,在給php安裝擴充之前必須先執行這個命令.
2.編譯安裝
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
3.讓php支援xcache的功能
mkdir /etc/php.d
cp xcache.ini /etc/php.d/
4.安裝完成,重啟httpd調用php.info測試
附:XCache設定檔主要參數說明
[xcache-common]
extension = xcache.so :xcache模組名
[xcache.admin]
xcache.admin.enable_auth = On :認證功能
xcache.admin.user = "mOo" :認證使用者名稱
xcache.admin.pass = "md5 encrypted password" :密碼
[xcache]
xcache.shm_scheme = "mmap" :以何種方式共用記憶體 "mmap"記憶體映射
xcache.size = 60M :緩衝空間大小
xcache.count = 1 :設定cpu個數
xcache.slots = 8K :hash 槽個數的參考值xcache.ttl xcache.var_ttl= 0 :緩衝到期時間,0永不到期
xcache.gc_interval = 0 :檢查到期項目, 回收記憶體空間的間隔xcache.var_size = 4M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.var_namespace_mode = 0
xcache.var_namespace = ""
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.coredump_type = 0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On :xcache功能開啟,當緩衝空間為0時無效
xcache.stat = On :檢查指令碼更新
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coverager_autostart = On :每個頁面請求自動調用xcache
xcache.coveragedump_directory = ""