如何在 ServBay 中啟用與設定 PHP Opcache 模組
ServBay 是一款功能強大的本機 Web 開發環境,專為開發者打造,整合多種技術棧,包括 PHP。為了協助開發者優化 PHP 應用效能,ServBay 針對所有支援的 PHP 版本預先安裝了 Opcache 模組。本文將詳細說明如何在 ServBay 中啟用及設定 Opcache,並剖析它如何加速你的 PHP 開發與測試流程。
Opcache 模組簡介
Opcache 是 PHP 官方的效能擴充,用來提升 PHP 程式執行效能。其核心原理為將經過預編譯的 PHP 腳本位元碼快取於共用記憶體。如此一來,對同一腳本的後續存取即可直接使用快取的位元碼,無需重複解析、編譯和優化,有效減少 CPU 及記憶體消耗,加快應用回應速度。
為什麼 Opcache 對開發者很重要?
- 加速開發與測試: 在本機開發環境啟用 Opcache 可讓應用運行速度顯著提升,縮短頁面載入等待,提升開發效率。
- 模擬正式環境: 多數生產環境皆啟用 Opcache 以優化效能,本地啟用能讓測試情境更加貼近實際部署狀態。
- 降低資源耗用: 特別是在運行大型框架或複雜應用時,Opcache 可大幅減少本機資源消耗。
Opcache 主要特色
- 位元碼快取: 主要功能為快取經編譯的 PHP 代碼。
- 記憶體共用: 快取資料儲存於共用記憶體,可供多個 PHP 行程共用。
- 自動失效: 可配置自動檢查檔案更新,確保快取及時同步。
- 彈性設定: 提供豐富的調校選項,開發者可依實際需求進行調整。
- 內建支援: 作為 PHP 官方擴充,與 PHP 核心深度整合。
ServBay 對 Opcache 的支援
ServBay 為所有整合的 PHP 版本(如 PHP 7.4、8.0、8.1、8.2、8.3、8.4 等)預先安裝相對應的 Opcache 模組。使用者無需額外下載或編譯,可直接透過 ServBay 圖形介面或編輯設定檔完成啟用與調整。
如何啟用 Opcache 模組
在 ServBay 中開啟 Opcache 模組有兩種主要方式:可透過圖形用戶介面(GUI)或手動修改設定檔。
方法一:透過 ServBay GUI 啟用(推薦)
這是最簡單、最快捷的方法。
- 開啟 ServBay 應用程式。
- 在側邊欄導覽中點選 語言 (Languages)。
- 選擇你欲啟用 Opcache 的 PHP 版本,例如 PHP 8.3。
- 在右側 PHP 版本詳情頁籤,按下 擴充套件 (Extensions)。
- 在清單中找到 OPcache 擴充。
- 點擊 OPcache 左方的切換開關,將其開啟。
- 點擊頁面下方的 儲存 (Save) 按鈕。
- ServBay 會提示你必須重新啟動對應 PHP 套件以套用變更。點擊 重新啟動 (Restart) 按鈕。
完成重啟後,Opcache 模組即已啟用。
方法二:手動編輯設定檔
如需更細緻配置,或偏好透過設定檔管理,可手動修改 Opcache 的 .ini
檔案。
- 找到設定檔位置: Opcache 的設定檔位於對應 PHP 版本的
conf.d
目錄下。此目錄存放全部載入該 PHP 版本的擴充相關設定檔。- 以 PHP 8.3 為例,設定檔路徑通常為:
/Applications/ServBay/etc/php/8.3/conf.d/opcache.ini
1 - 請依實際使用的 PHP 版本調整路徑中的版本號。
- 以 PHP 8.3 為例,設定檔路徑通常為:
- 編輯設定檔: 使用你喜愛的文字編輯器開啟
opcache.ini
檔案。- 通常此檔案已涵蓋 Opcache 基本設定範例,僅被註解。找到
[Zend Opcache]
區塊。 - 移除
;
以取消註解zend_extension = opcache.so
該行,確保載入 Opcache 擴充。 - 可視需求調整或新增其他 Opcache 設定參數。典型規格如以下所示(各參數詳細說明見下一節):ini
[Zend Opcache] ; Ensure the extension is loaded zend_extension = opcache.so ; Basic Configuration (example values) opcache.enable = 1 ; 啟用 Opcache 全域功能 (1=啟用, 0=關閉) opcache.memory_consumption = 128 ; 指定快取所需的記憶體容量(單位:MB) opcache.interned_strings_buffer = 8; 內部字串快取記憶體大小(單位:MB) opcache.max_accelerated_files = 4000 ; 可快取檔案的最大數量 opcache.revalidate_freq = 60 ; 多久檢查一次檔案更新(秒)。0=每次請求均檢查(較慢,但適合開發) opcache.fast_shutdown = 1 ; 啟用快速關閉 opcache.enable_cli = 1 ; PHP CLI(命令列工具)是否啟用 Opcache
1
2
3
4
5
6
7
8
9
10
11
12 - 儲存
opcache.ini
檔案。
- 通常此檔案已涵蓋 Opcache 基本設定範例,僅被註解。找到
- 重新啟動 PHP 套件: 在 ServBay 應用中,於側邊欄點選 套件 (Packages) 下拉選單,選擇 PHP,點擊對應 PHP 套件的重啟按鈕。
經手動編輯設定檔並重啟 PHP 後,Opcache 模組及新設定將會生效。
驗證 Opcache 模組是否成功載入
最精確檢查 Opcache 是否已啟用的方法,是查閱 PHP 設定資訊(phpinfo()
)。
- 建立
phpinfo.php
檔案: 於你的 ServBay 網站根目錄建立一個名為phpinfo.php
的新 PHP 檔。例如 ServBay 的預設網站根目錄路徑為/Applications/ServBay/www/
。你可以另外建立子目錄,如/Applications/ServBay/www/servbay.demo/
,再將phpinfo.php
放進該目錄。 檔案內容如下:php<?php phpinfo(); ?>
1
2
3 - 瀏覽
phpinfo.php
: 確認網頁伺服器(如 Caddy 或 Nginx)已啟動,且正確指向你的網站根目錄或測試子目錄。使用瀏覽器開啟該檔案的對應網址。- 假設你將檔案放在
/Applications/ServBay/www/servbay.demo/
,並設定網域名稱servbay.demo
指向此目錄,對應網址可能為http://servbay.demo/phpinfo.php
。 - 若直接放到預設根目錄
/Applications/ServBay/www/
,且 ServBay 預設網站指向此處,網址可能為http://localhost/phpinfo.php
或 ServBay 預設的本機訪問地址。
- 假設你將檔案放在
- 查詢 Opcache 資訊: 在打開的
phpinfo()
頁面中,向下捲動或利用瀏覽器查找功能(Cmd+F
或Ctrl+F
)搜尋 "Opcache"。- 若 Opcache 模組成功載入,將可見 "Zend Opcache" 專屬資訊區塊,顯示 Opcache 的版本、狀態及目前參數配置。
- 若找不到 "Zend Opcache" 區塊,表示模組載入失敗。請返回檢查啟用步驟與設定檔內容。
圖示:於 phpinfo 頁面查詢 Zend Opcache 配置區塊
Opcache 參數設定詳解
Opcache 提供多項參數,讓你可依開發或應用需求進行微調。這些參數通常於 opcache.ini
中配置。以下列出常見且重要的參數說明:
[Zend Opcache]
; 確保已載入擴充
zend_extension = opcache.so
; 啟用 Opcache。0 = 停用,1 = 啟用。GUI 開關即控制此值。
opcache.enable = 1
; 分配給 Opcache 快取已編譯 PHP 位元碼的共用記憶體大小(MB)。
; 根據專案規模及記憶體可用量調整。大型專案需更多記憶體。
opcache.memory_consumption = 128
; 給內部字串(如類別名、方法名)專屬共用記憶體的大小(MB)。
; 若採用大量字串的框架(如 Symfony)可適當提高此值。
opcache.interned_strings_buffer = 8
; Opcache 可快取的最大 PHP 檔案數量。
; 若專案檔案數超過本值,部分檔案將無法快取。建議設比專案實際檔案數高。
opcache.max_accelerated_files = 10000
; Opcache 檢查腳本更新的頻率(秒)。
; 生產環境通常設較高值(如 300、600),或設為 0(不自動檢查,手動清快取)。
; **本地開發時,為利代碼改動快速生效,建議設 1 或 2 秒。** 設為 0 則每次請求皆檢查,有利開發但影響快取成效。
opcache.revalidate_freq = 2
; 啟用快速關閉序列,可加速請求結束時的記憶體釋放。建議啟用。
opcache.fast_shutdown = 1
; 在 PHP CLI(命令列界面)中啟用 Opcache。
; 可加速指令列腳本、Composer 等操作,建議啟用。
opcache.enable_cli = 1
; 是否允許釋放閒置共用記憶體。某些情況有助釋放記憶體,但可能稍微影響效能。通常保持預設或關閉即可。
; opcache.enable_file_override = 0
; 快取檔案路徑時是否忽略註解。啟用可省少許記憶體,可能影響需讀註解之工具。
; opcache.save_comments = 1
; 快取時是否保留文件註解(Docblocks)。若工具(如 PHPUnit、Doctrine)依賴註解,務必啟用。
; opcache.load_comments = 1
; 最佳化等級。數值越大,最佳化越多,但可能增加編譯耗時。預設值已充份。
; opcache.optimization_level = 0x7FFFBBFF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
請注意,調整 opcache.ini
設定後,務必重新啟動對應 PHP 套件以套用變更。
常見問答 (FAQ)
- 問:Opcache 是否預設啟用? 答:在 ServBay 中,Opcache 模組預裝但通常預設關閉。你需按前文步驟手動啟用。
- 問:啟用 Opcache 會影響開發流程嗎? 答:啟用後應用會運作更快。開發時建議將
opcache.revalidate_freq
設為低值(如 1、2)或 0,確保代碼改動能即刻反映。等開發結束、上線前,再設較高值配合手動清快取。 - 問:Opcache 會快取 PHP CLI 腳本嗎? 答:預設不會。必須將
opcache.enable_cli
設為1
,才會對 PHP CLI 生效。這有助加速 Composer、單元測試等命令列工具。 - 問:Opcache 記憶體應該怎麼分配? 答:
opcache.memory_consumption
值依專案規模與複雜度調整。多數本地開發專案有 128MB、256MB 已足夠;如專案極大或於phpinfo()
見到快取已滿之警告,可適度調高本值。 - 問:調整
opcache.ini
後該怎麼做? 答:每次調整.ini
檔案後,皆需重新啟動對應 PHP 套件,變更才會生效。
小結
Opcache 是功能強大且易用的 PHP 效能最佳化工具。ServBay 為開發者提供極便捷的 Opcache 啟用與管理方式,無論是直觀 GUI 或彈性的設定檔調整。只需幾步,即能於 ServBay 環境開啟 Opcache,大幅提升 PHP 應用的載入速度與回應效能,讓你本機開發/測試體驗再升級。依據專案特性調整相關參數,更能進一步發揮效能。現在就於 ServBay 啟用 Opcache,立即感受 PHP 效能飛躍!