PHP多进程 - opcode缓存与用户缓存(APC, XCache, eAcclerator,Zend Opcache,Yac)
php是解釋性的語言,每次運行都需要重新解釋成opcode,這顯然很浪費時間,使得php開發的web應用的性能不高。所以就出現了針對opcode的緩存組件,同時,一般的緩存組件又都提供用戶數據的緩存(用于多進程php-fpm之間的數據共享)。
針對opcode的緩存
1、APC:早期使用的較多。
2、eAcclerator:沒用過。
3、XCache:帶管理頁面的,性能優于APC,不在php源碼里面,也不在pecl倉庫,不再支持php7了好像。最新版的3.2.0只支持到5.6,都找不到更高的xcache的下載地址了。
4、Zend Opcache :php5.5之后自帶的,性能最佳。
關于APC與Zend Opcache
APC除了提供Opcode Cache以外, 還會提供一套User Data Cache(apc_store/apc_fetch), 所以對于很多有需求使用User Data Cache的同學, 使用APC, 就沒什么問題。
然而, Zend Optimizer Plus開源了, 測試表明, Zend O+在Opcode Cache方面, 因為做了Opcode Cache優化, 所以會比APC要高效, 再后來, PHP5.5已經把Zend O+作為了源代碼的一部分,改名為 Zend Opcache,會隨著PHP一起發布。
這就有了個問題, 對于那些既要使用Zend O+的Opcode Cache, 又要使用APC的User Data Cache的同學, 怎么辦呢?開始的時候, 只是給APC增加了一個開關apc.opcode_cache_enable, 這樣一來, 用戶就可以使用APC然而關閉opcode cache來達到這個目的, 后來將APC中關于User Data Cache的功能獨立到APCu擴展里面。但是APC的User Data Cache使用的存儲機制是和Opcode Cache一樣的。這樣的場景要求數據嚴格正確, 所以鎖會比較多, 測試表明, APC的User Data Cache的效率和本地memcached幾乎相當.。
針對用戶數據的緩存
就是用來在PHP多進程間共享數據用的。
1、Yac:無鎖,訪問效率高,存在數據安全隱患,做緩存。
2、APCu:APC的針對User Data Cache的部分功能,有鎖,數據安全,效率不如Yac。
3、XCache:廢棄。
4、本地mamcache:會有網絡IO,性能同APCu差不多。
5、eAcclerator。
總結
以上是生活随笔為你收集整理的PHP多进程 - opcode缓存与用户缓存(APC, XCache, eAcclerator,Zend Opcache,Yac)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARTS-第-22-期
- 下一篇: CentOS 6.x 使用包管理器安装配