什么是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的中間代碼??梢宰鯬HP文件的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緩存。
新聞熱點
疑難解答
圖片精選