您好,登錄后才能下訂單哦!
如何啟用OPCache提高PHP程序性能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
(1)在命令行下可通過如下命令檢查是否已經安裝了OPcache:
php -m | grep "OPcache"
有結果則代表已安裝了。
(2)安裝OPCache模塊
如果你的php環境沒有安裝該模塊,也可以通過如下方法進行安裝:
依次執行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz tar xzf zendopcache-7.0.2.tgz cd zendopcache-7.0.2 phpize
(如果不知道 phpize 在哪里的話可以通過 find 命令進行查找,也可以找到PHP路徑,通常是在一起的,我的就在/alidata/server/php/bin/phpize,下面這行也要按你的php.ini路徑自行修改)
./configure --with-php-config=/usr/local/php/bin/php-config make make install
如果顯示Installing shared extensions: /alidata/server/php/lib/php/extensions/no-debug-zts-20100525/ 則表示安裝成功了。
(3)開啟OPCache模塊支持
找到php.ini文件,在文件末尾加上如下代碼(如果已經存在[opcache]這個標簽了,則只需在這個標簽下做相應的添加或者修改):
[opcache] ; dll地址 zend_extension=php_opcache.dll ; 開關打開 opcache.enable=1 ; 開啟CLI opcache.enable_cli=1 ; 可用內存, 酌情而定, 單位為:Mb opcache.memory_consumption=128 ; Zend Optimizer + 暫存池中字符串的占內存總量.(單位:MB) opcache.interned_strings_buffer=8 ; 對多緩存文件限制, 命中率不到 100% 的話, 可以試著提高這個值 opcache.max_accelerated_files=10000 ; Opcache 會在一定時間內去檢查文件的修改時間, 這里設置檢查的時間周期, 默認為 2, 定位為秒 opcache.revalidate_freq=1 ; 打開快速關閉, 打開這個在PHP Request Shutdown的時候回收內存的速度會提高 opcache.fast_shutdown=1 ; 不保存文件/函數的注釋 opcache.save_comments=0
添加完畢重啟apache或者nginx服務器,打開phpinfo頁面看看是否已經生效,如果看到如下信息則代表已經配置成功了。
(4)功能測試以及注意事項
在phpinfo()信息中, 目前來看有兩條信息猶為重要:
Cache hits (高級緩存命中)
Cache misses (高級緩存未命中)
通過這兩條信息中即可觀察緩存運行情況。
我們做個測試,驗證一下什么是opcache,新建包含如下代碼的一個文件:
echo 'hello opcache';
這是一段非常簡單的php代碼,請保存為demo.php文件然后訪問,隨意刷新,Cache hits數值會不停地增加,說明起作用了。
然后你修改代碼為:
echo 'hello codetc.com';
再刷新demo.php,應該可以看到效果,打印出來的值仍然是 hello opcache,即源碼被緩存了,它不再解析demo.php文件。
那多少秒之后其結果才會變為 hello phpernote.com 呢?這里可通過設置:
opcache.force_restart_timeout=180
的時間來控制更新速度,這里的單位是秒,即180秒后重新編譯一次源php編碼。
這就類似于web項目中的靜態文件緩存一下,比如我們加載一個網頁,瀏覽器會自動幫我們把jpg,css緩存起來,唯獨php沒有緩存,每次均需要open文件,解析代碼, 執行代碼這一過程,而opcache即可解決這個問題,代碼會被高速緩存起來,提升訪問速度。
所以當改變PHP文件代碼后,并不能立即看到效果,這視opcache.revalidate_freq
的更新周期而定,所以建議在項目更新執行自動化腳本利用opcache_reset()
函數自動重置opcache。OPcache總共提供了如下幾個函數:
opcache_compile_file — 無需運行,即可編譯并緩存 PHP 腳本
opcache_get_configuration — 獲取緩存的配置信息
opcache_get_status — 獲取緩存的狀態信息
opcache_invalidate — 廢除腳本緩存
opcache_reset — 重置字節碼緩存的內容
php,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,現在被很多的網站編程人員廣泛的運用。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。