什麼是 opcode?
通常情況 PHP
的程序運行 Zend
虛擬之上的,當然也可以選擇 FB 出的 HHVM 。 PHP 的 opcode 就是 Zend 虛擬機執行的指令。我們的 PHP 代碼在需要先通過 Zend 編譯器編譯為 opcode,再通過 Zend 解析器執行 opcode
指令。
opcode 緩存目的
通過將 PHP 腳本預編譯的字節碼存儲到共享內存中來提升 PHP 的性能,存儲預編譯字節碼的好處就是省去了每次加載和解析 PHP 腳本的開銷。
Zend Optimizer v3.x.x v2.x.x
在 PHP-5.2.x 以前的 PHP 版本使用,用優化代碼的方法來提高 PHP 應用程序的執行速度,理論上要比不使用 ZO 要快 40%-100% 。實現的原理是對 那些在被最終執行之前由運行編譯器 (Run-Time Compiler) 產生的代碼進行優化。 (來自百科) 而且在 PHP-5.2.x 之前只有通過官方 Zend Optimizer 才能運行經 Zend Guard 加密和混淆的 PHP 代碼。
Zend Guard Loader
PHP-5.3.x 之後的 PHP 版本使用,加強對 PHP 商用代碼的保護,並提高 PHP 的執行性能,其前身就是 Zend Optimizer 。
OPcache
能夠在共享內存中儲存預編譯的 PHP 腳本,以提高 PHP 的執行性能,從而使得不用每次請求都要加載與解析 PHP 腳本。 PHP-5.5 以後,已捆綁和 PHP 一起發佈。
APC
Alternative PHP Cache (APC)
是一個開放自由的 PHP opcode
緩存。它的目標是提供一個自由、 開放,和健全的框架用於緩存和優化 PHP 的中間代碼。可以做 PHP 文件的 opcode
緩存,也可以做用户數據緩存 (小量的) 。
eAccelerator
eAccelerator
是一個免費開源的 PHP 加速、優化、編譯和動態緩存的項目,它可以通過緩存 PHP 代碼編譯後的結果來提高 PHP 腳本的性能,eAccelerator
通過把經過編譯後的 PHP 代碼緩存到共享內存中,並在用户訪問的時候直接調用從而起到高效的加速作用,雖然是一個好項目,但是已經幾年沒有更新了,最新版 本支持 php-5.4,當然是官方説的。
Xcache
XCache
是一個又快又穩定的 PHP opcode
緩存器. 經過良好的測試並在大流量/高負載的生產機器上穩定運行. 經過 (在 linux 上) 測試並支持所有現行 PHP 分支的最新發布版本, 如 PHP_5_1 PHP_5_2 PHP_5_3 PHP_5_4.
並完美支持線程安全/Windows. 與同類 opcode 緩存器相比更勝一籌, 比如能夠快速跟進 PHP 版本.
PHP 代碼的加密與 OPcode 緩存
將 PHP 代碼直接編譯為 opcode 代碼, 其實也是一種加密 PHP 代碼的機制了,因為只需要再進一步將 opcode 代碼簡單的序列化或者混淆,然後在 Zend 虛擬機執行之後,反解為 opcode 代 碼即可。但是加密的目的是為了避免源代碼被分析的可能;而 opcode 是為了提高程序的運行速度。
總結:
如果要選擇 OPcode 那就直接用 PHP 官方推薦的 OPcache 吧,如果你的是商業 PHP 代碼,在 PHP-5.2.x 之前選擇是 Zend Optimizer,但是 PHP-5.3+的版本就需要使用 Zend Guard Loader 了。值得注意的是 PHP 加密並優化之後,還可以選擇一種 Opcode 緩存。