PHP 是一種直譯式語言,也就是說程式碼開起來以後,讀一行、執行一行,軟體修改後不須重新編譯,直譯器重新再讀取一次即可看到修改後行為上的差異。
這在開發環境是一個非常棒的特性,可以加速開發的迭代速度。但也有缺點,當程式確定要上產品線以後,在正式主機上 PHP 也是讀一行執行一行,每次使用者造訪網頁時都要開啟程式碼讀取一次。
之前在 2010 年時,是讓 PHP 搭配 APC 來將讀取過的結果暫存起來,現在 PHP 官方已經內建 OPcache 工具來處理,不用另外安裝工具。OPcache 會將已翻譯過得檔案建立快取,只要程式碼沒有變更過且有快取可用,PHP 就會直接從快取來執行而不重新讀取程式碼,這對產品線上不常更動的程式非常有用。
開啟 php.ini
並找到 [opcache]
:
[opcache] opcache.enable = 1 ; 設定為啟動 opcache.memory_consumption = 512 ; 使用 512MB 的記憶體做快取
主要就上面這二個設定,其他的可以看說明再調整。
接下來要注意的就是觀察主機記憶體使用量,千萬不要讓記憶體吃光開始使用 SWAP,不然就會變成沒有開啟 OPcache 那樣慢了。