PHP效能加速-開啟Opcache

Lance發表於2020-09-10

編譯器是把源程式的每一條語句都編譯成機器語言,並儲存成二進位制檔案,這樣執行時計算機可以直接以機器語言來執行此程式,速度很快;而直譯器則是隻在執行程式時,才一條一條的解釋成機器語言給計算機來執行,所以執行速度是不如編譯後的程式執行的快的

對於一個編譯型程式(比如Java,C),它的編譯和執行是分開的,先編譯成二進位制可執行檔案,然後再次執行。

PHP效能加速-開啟Opcache

對於PHP、Python屬於解釋型語言,不產生機器碼,而是產生中間碼(中間碼是不能直接執行,這個中間碼只有直譯器可以識別到,中間碼要靠解析器來進行執行)

PHP效能加速-開啟Opcache

比如說PHP的解析器是Zend,PHP使用Zend引擎,中間碼我們也稱作為操作碼(opcode)

PHP屬於解釋型語言,在執行程式碼過程中,翻譯器並不產生目標機器程式碼,而是產生易於執行的中間程式碼,這種中間程式碼每執行一次就翻譯一次,通常會導致執行效率較低,而在PHP7中可以直接開啟Opcache來進行效能優化和加速。

PHP 5.5+版本以上的,可以使用PHP自帶的opcache開啟效能加速(預設是關閉的)

1. 開啟php.ini檔案

php -i | grep php.ini

找到php的配置檔案

2. 配置Opcache

使用vim開啟php.ini檔案,找到[opcache],設定如下:

[opcache]
; 開關開啟
opcache.enable=1
; 設定共享記憶體大小, 單位為:Mb
opcache.memory_consumption=128
;如果啟用,那麼 OPcache 會每隔 opcache.revalidate_freq 設定的秒數 檢查指令碼是否更新。 如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函式來手動重置 OPcache,也可以 通過重啟 Web 伺服器來使檔案系統更改生效。
opcache.validate_timestamps=60

然後找到zend_extension="opcache.so"這行,把前面的分號去掉,如果沒有這行,請在檔案末尾新增。

3. 重啟php-fpm服務

重啟php-fpm,讓配置生效。

# /etc/init.d/php-fpm restart

使用php -m檢視Opcache是否生效。

# php -m
[PHP Modules]
....
[Zend Modules]
Zend OPcache
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章