国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

啟用OPCache提高PHP程序性能的方法

2024-05-05 00:07:41
字體:
來源:轉載
供稿:網友

說明

PHP 5.5+版本以上的,可以使用PHP自帶的opcache開啟性能加速(默認是關閉的)。對于PHP 5.5以下版本的,需要使用APC加速,這里不說明,可以自行上網搜索PHP APC加速的方法。

opcache是Zend Optimizer編譯到php環境中的名字,意思即優化緩存。Zend OPcache 通過將 PHP 腳本預編譯的字節碼存儲到共享內存中來提升 PHP 的性能, 存儲預編譯字節碼的好處就是省去了每次加載和解析 PHP 腳本的開銷。

這個PHP加速插件的主要原理就是把PHP執行后的數據緩沖到內存中從而避免重復的編譯過程,能夠直接使用緩沖區已編譯的代碼從而提高速度,降低服務器負載,它們的效率是顯而易見的。

在 PHP 5.5及以后的版本中 OpCache 已內建該模塊,在編譯安裝php時使用 --enable-opcache 即可在以后的開發工作中正常使用Opcache了。

(1)在命令行下可通過如下命令檢查是否已經安裝了OPcache:

php -m | grep "OPcache"

有結果則代表已安裝了。

(2)安裝OPCache模塊

如果你的php環境沒有安裝該模塊,也可以通過如下方法進行安裝:

依次執行下面的命令

wget http://pecl.php.net/get/zendopcache-7.0.2.tgztar xzf zendopcache-7.0.2.tgzcd zendopcache-7.0.2phpize 

(如果不知道 phpize 在哪里的話可以通過 find 命令進行查找,也可以找到PHP路徑,通常是在一起的,我的就在/alidata/server/php/bin/phpize,下面這行也要按你的php.ini路徑自行修改)

./configure --with-php-config=/usr/local/php/bin/php-configmakemake 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; 開啟CLIopcache.enable_cli=1; 可用內存, 酌情而定, 單位為:Mbopcache.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頁面看看是否已經生效,如果看到如下信息則代表已經配置成功了。

OPCache,PHP,程序性能

(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 — 重置字節碼緩存的內容

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 庆云县| 葫芦岛市| 东海县| 陆丰市| 芜湖县| 奈曼旗| 江孜县| 阜新市| 衡山县| 江口县| 南涧| 巴彦县| 桐城市| 富裕县| 孙吴县| 泗阳县| 桦甸市| 高要市| 奉贤区| 南京市| 满洲里市| 临泽县| 安丘市| 娄底市| 广元市| 班戈县| 浪卡子县| 崇礼县| 武山县| 叶城县| 玛纳斯县| 太仆寺旗| 华安县| 静乐县| 贵州省| 郑州市| 龙门县| 廉江市| 云安县| 那曲县| 绥阳县|