1. 程式人生 > >PHP四大加速快取器opcache,apc,xcache,eAccelerator與php解析的初步理解

PHP四大加速快取器opcache,apc,xcache,eAccelerator與php解析的初步理解

前言:

這陣在重新整理下知識點,由快取技術考慮到的php快取器,下面知道的大概有這個幾種:
opcache、APC、xcache、eAccelerator,下面是我個人的理解,這幾種加速器的原理是將編譯後的原始碼起來,當下次執行相同程式碼時,可以省去詞法語法分析等步驟,提高php的執行效率

下面是這些加速的配置方式,後續我將繼續更新此文章,包含使用這些加速器的不同效果
一、opcache(官方推出的產品還是好用的)

opcache 通過將 PHP 指令碼預編譯的位元組碼儲存到共享記憶體中來提升 PHP 的效能, 儲存預編譯位元組碼的好處就是 省去了每次載入和解析 PHP 指令碼的開銷。

PHP 5.5.0 及後續版本中已經綁定了 opcache 擴充套件。 對於 PHP 5.2,5.3 和 5.4 版本可以使用PECL擴充套件中的 opcache 庫。

  • windows下的php擴充套件下載地址:
http://windows.php.net/downloads/pecl/releases/
  • 配置如下:
開啟php.ini檔案,找到[opcache]

; dll地址
extension=php_opcache.dll
; 開關開啟
opcache.enable=1
; 開啟CLI
opcache.enable_cli=1
; 可用記憶體, 酌情而定, 單位為:Mb
opcache.memory_consumption=128 ; Zend Optimizer + 暫存池中字串的佔記憶體總量.(單位:MB) opcache.interned_strings_buffer=8 ; 對多快取檔案限制, 命中率不到 100% 的話, 可以試著提高這個值 opcache.max_accelerated_files=10000 ; opcache 會在一定時間內去檢查檔案的修改時間, 這裡設定檢查的時間週期, 預設為 2, (單位:秒) opcache.revalidate_freq=1 ; 開啟快速關閉, 開啟這個在PHP Request Shutdown的時候回收記憶體的速度會提高
opcache.fast_shutdown=1
二、APC

Alternative PHP Cache (APC) 是一個開放自由的PHP opcode快取。它的目標是提供一個自由、 開放,和健全的框架用於快取和優化PHP的中間程式碼。
- 下載apc擴充套件dll,選擇你對應的PHP版本

http://windows.php.net/downloads/pecl/releases/apc/
  • 把下載的php_apc.dll放入php的ext擴充套件目錄下。
  • 開啟php.ini檔案,配置如下:
[apc]
extension=php_apc.dll
apc.enabled=1
; 共享記憶體塊的數目
apc.shm_segments=1
; 共享記憶體塊的大小(單位:MB)
apc.shm_size=64
; 優化級別,更高的值則使用更主動的優化
apc.optimization=1
; 原始檔的數目,不確定設定為0
apc.num_files_hint=0
; 快取條目在緩衝區中允許逗留的秒數
apc.ttl=7200
; 針對每個使用者快取條目在緩衝區中允許逗留的秒數
apc.user_ttl=7200
; 快取條目在垃圾回收表中能夠存在的秒數
apc.gc_ttl=7200
; 檔案寫鎖
apc.write_lock=on
三、xcache(國產)
  • xcache是一個開源的 opcode 快取器/優化器。

- 下載xcache,選擇對應PHP版本的xcache

http://xcache.lighttpd.net/pub/Releases/
  • 把php_xcache.dll放到php的ext目錄下。
  • 開啟php.ini,配置如下:
[xcache-common]
extension = php_xcache.dll
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "md5後你的密碼"
[xcache]
; 選擇底層記憶體共享實現方案
xcache.shm_scheme = "mmap"
xcache.size = 128M
; 設定為CPU數
xcache.count = 1
; 只是個參考值
xcache.slots = 8K
; 快取時間
xcache.ttl = 1200
; 垃圾回收的時間間隔
xcache.gc_interval = 1200
; 同上,針對變數快取設定
xcache.var_size = 4M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 1200

; 變數最大快取時間
xcache.var_maxttl = 7200
xcache.var_gc_interval = 1200
xcache.var_namespace_mode = 0
xcache.var_namespace = ""
xcache.readonly_protection = Off
; 對於win系統,這裡不是檔案路徑
xcache.mmap_path = "xcache"
xcache.coredump_directory = ""
xcache.coredump_type = 0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coverager_autostart = On
xcache.coveragedump_directory = ""
下面我附上一張php解析的過程,讓大家瞭解瞭解