您好,登錄后才能下訂單哦!
apc和zendopcache什么區別
http://www.laruence.com/2013/03/18/2846.html
點擊(此處)折疊或打開
在以前, 很多人都會選擇使用APC, 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+作為了源代碼的一部分. 會隨著PHP一起發布.
這就有了個問題, 對于那些既要使用Zend O+的Opcode Cache, 又要使用APC的User Data Cache的同學, 怎么辦呢?
開始的時候, 我只是給APC增加了一個開關apc.opcode_cache_enable, 這樣一來, 用戶就可以使用APC然而關閉opcode cache來達到這個目的, 但是APC的User Data Cache使用的存儲機制是和Opcode Cache一樣的, 這樣的場景要求數據嚴格正確, 所以鎖會比較多, 測試表明, APC的User Data Cache的效率和本地memcached幾乎相當.
什么是opcode
http://www.nowamagic.net/librarys/veda/detail/1325
點擊(此處)折疊或打開
opcode是計算機指令中的一部分,用于指定要執行的操作, 指令的格式和規范由處理器的指令規范指定。 除了指令本身以外通常還有指令所需要的操作數,可能有的指令不需要顯式的操作數。 這些操作數可能是寄存器中的值,堆棧中的值,某塊內存的值或者IO端口中的值等等。
通常opcode還有另一種稱謂:字節碼(byte codes)。 例如Java虛擬機(JVM),.NET的通用中間語言(CIL: Common Intermeditate Language)等等。
PHP中的opcode則屬于前面介紹中的后著,PHP是構建在Zend虛擬機(Zend VM)之上的。PHP的opcode就是Zend虛擬機中的指令。
簡單來說
apc和zendopcache都能做opcode cache,但是zendopcache的效率比apc高,所以能用zendopcache做opcode cache就用zendopcache
但是apc提供額外的User Data Cache,而zendopcache不提供,為了這兩個一起用不沖突,關閉掉apc的opcode cache功能就能一起用了
所以apc里設置apc.enable_opcode_cache=0就能和zendopcache一起用了
這個User Data Cache又是啥呢,應該就是類似靜態變量之類的吧
因為PHP像有守護進程的JAVA之類的語言,沒有真正的靜態變量,當需要類型靜態變量的時候,
比如說游戲服務器ID,ip之類的很少更新的信息估計都能存這里面,免去反復讀取數據庫。
另外apc在5.5的時候已經去掉opcode cache功能并改名為apcu,意思是只提供user cache了,不過5.5還有能用apc的一個補丁過得版本。
在php5.6里需要直接用apcu了,沒人在補丁apc給php5.6了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。