PHP的apcu是什麼,opcache又是什麼?

1,APCu

APCu is APC stripped of opcode caching.

這是apcu的官方文檔解釋,簡單的說APCU是從APC剝離出來的用戶數據緩存功能,而去掉了apc的opcode cache。

所以後來:APCu = APC User 

APC的主要用途有兩項:

  1. 將PHP代碼編譯之後所產生的bytecode暫存在共享內存內供重複使用,以提升應用的運行效率。(Opcode Cache)
  2. 提供用戶數據緩存功能,需要顯示的調用,和redis/memcache類似。(User Data Cache)

其中第一點是其主要功能,因爲PHP的運行機制——每次接受一個請求時都要初始化所有的資源(將源代碼編譯成bytecode),執行代碼,然後釋放資源;但其實代碼99%的情況下並不會改變,所以每次請求都編譯執行十分的消耗時間。所以啓用Opcache Cache後,可以在初始化資源階段減少CPU和內存的消耗。

但是PHP從PHP 5.5開始,使用ZendOptimizerPlus作爲內置的Opcode Cache實現。所以現在APCU的主要功能便不再有意義了,而且其官方也隨後表示不再維護APC了。

apcu也提供了緩存常見的一些操作,如:

但apcu也有一個明顯的缺點:這意味着如果您將PHP用作FastCGI進程(例如Nginx和php-fpm),則每個PHP進程都會擁有自己的緩存。在FastCGI模式下重啓後將會清除緩存。

 

2, Opcache  

opcache就是APC剝離出的第一個緩存字節碼的功能緩存。

OPCache is a special caching mechanism that stores precompiled versions of the PHP files. When executed, a PHP file is compiled to bytecode and once this process is done, the bytecode is executed.

OPCache是​​一種特殊的緩存機制,用於存儲PHP文件的預編譯版本。執行後,一個PHP文件被編譯爲字節碼,一旦完成此過程,字節碼便被執行。

自PHP 5.5起,它已捆綁在內核中,只需安裝它即可使我們獲得極大的速度改進,而不必像apcu那樣去顯式的調用它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章