OPcache 是 PHP 內建的一個記憶體快取系統的擴充套件,可以用來將 PHP 程式碼的 opcodes(優化後的程式碼) 編譯並快取在共享內存中,以提高 PHP 程式的執行速度。OPcache 可以有效地減少 PHP 程式的啟動時間和執行時間,從而提高網站的性能和響應速度,不會造成資料庫鎖表或效能下降,本筆記我會將我所知道的知識分享給大家參考,我也順便紀錄下來當作備忘錄,也希望藉由此次分享讓初學者能更快掌握相關語法。
OPcache主要功能是:
- 將 PHP 腳本編譯後的 opcodes(優化後的程式碼) 緩存在記憶體中,避免每次執行時都需要重新編譯。這樣可以大幅提升 PHP 應用程式的效能。
- 緩存 PHP 檔案的元資料(如修改時間、inode 等),避免每次都需要檢查檔案是否有修改。
- 支援自動無效化快取,當 PHP 檔案有修改時自動重新載入快取。
- 可以設置各種參數來控制快取行為,如快取大小、過期時間等。
Table of Contents
啟動OPcache擴充套件
1.驗證 PHP 版本
root@ip-192-168-0-99:/# php -version
PHP 8.1.23 (cli) (built: Sep 2 2023 06:58:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.23, Copyright (c) Zend Technologies
with Zend OPcache v8.1.23, Copyright (c), by Zend Technologies
root@ip-192-168-0-99:/#
2.編輯 php.ini 文件來啟用 PHP OPcache
root@ip-192-168-0-99:/# vim /etc/php/8.1/fpm/php.ini
3.取消設定區段的 「;」註解
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
4.重新啟動
root@ip-192-168-0-99:/# systemctl restart nginx php8.1-fpm
5.驗證 PHP OPcache是否有成功被啟動
root@ip-192-168-0-99:/# php -i | grep opcache
/etc/php/8.1/cli/conf.d/10-opcache.ini,
opcache.blacklist_filename => no value => no value
opcache.consistency_checks => 0 => 0
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => Off => Off
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
:
:
參數太多以下省略
root@ip-192-168-0-99:/#
建立OPcache Web GUI方便管理
1.建立OPcache資料夾、設定權限
root@ip-192-168-0-99:/# mkdir -p /var/www/opcache.rdpapa.tw
root@ip-192-168-0-99:/# chown -R www-data:www-data /var/www/opcache.rdpapa.tw
root@ip-192-168-0-99:/# chmod -R 775 /var/www/opcache.rdpapa.tw
2. 建立 PHP OPcache 的狀態儀表板頁面
先到GitHub抓別人已經調整好的頁面=>參考連結
root@ip-192-168-0-99:/# cp index.php /var/www/opcache.rdpapa.tw
3.於nginx設定檔中,新增一個站台設定檔案
#建立nginx站台設定檔案
root@ip-192-168-0-99:/# vim/etc/nginx/sites-available/opcache.rdpapa.tw.conf
#opcache.rdpapa.tw.conf內容
server {
listen 80;
root /var/www/opcache.rdpapa.tw/;
index index.php index.html index.htm;
server_name opcache.rdpapa.tw;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
location ~ /\.ht {
deny all;
}
}
#建立nginx站台軟連結至sites-enabled
root@ip-192-168-0-99:/# sudo ln -s /etc/nginx/sites-available/opcache.rdpapa.tw.conf /etc/nginx/sites-enabled/
4.重新抓取新的nginx設定檔至記憶體中
root@ip-192-168-0-99:/# systemctl reload nginx
5.可以測試OPcache看看目前Cache的收錄狀態
http://opcache.rdpapa.tw/index.php |
※本範例中opcache.rdpapa.tw 可以換成你自己的網址
Reference

你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]