溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中的OPcache 如何擴展

發(fā)布時間:2020-07-30 11:37:01 來源:億速云 閱讀:166 作者:Leah 欄目:編程語言

PHP中的OPcache 如何擴展?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

OPcache 通過將 PHP 腳本預(yù)編譯的字節(jié)碼存儲到共享內(nèi)存中來提升 PHP 的性能, 存儲預(yù)編譯字節(jié)碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷。PHP 5.5 之后的版本都是默認綁定該擴展的,之前的 PHP 5.2,5.3 和 5.4 版本可以使用 ? PECL 擴展中的 OPcache 庫。

配置項解釋

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

該配置項是PHP手冊推薦,在 php.ini 中間進行設(shè)置,關(guān)于每個配置項的說明如下:

  • opcache.memory_consumption :OPcache 的共享內(nèi)存大小,以兆字節(jié)為單位。
  • opcache.interned_strings_buffer :用來存儲預(yù)留字符串的內(nèi)存大小,以兆字節(jié)為單位。 PHP 5.3.0 之前的版本會忽略此配置指令。
  • opcache.max_accelerated_files :OPcache 哈希表中可存儲的腳本文件數(shù)量上限。 真實的取值是在質(zhì)數(shù)集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一個大于等于設(shè)置值的質(zhì)數(shù)。 設(shè)置值取值范圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
  • opcache.revalidate_freq :檢查腳本時間戳是否有更新的周期,以秒為單位。 設(shè)置為 0 會導致針對每個請求, OPcache 都會檢查腳本更新。如果 opcache.validate_timestamps 配置指令設(shè)置為禁用,那么此設(shè)置項將會被忽略。
  • opcache.validate_timestamps : 如果啟用,那么 OPcache 會每隔 opcache.revalidate_freq 設(shè)定的秒數(shù) 檢查腳本是否更新。 如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函數(shù)來手動重置 OPcache,也可以 通過重啟 Web 服務(wù)器來使文件系統(tǒng)更改生效。
  • opcache.fast_shutdown :如果啟用,則會使用快速停止續(xù)發(fā)事件。 所謂快速停止續(xù)發(fā)事件是指依賴 Zend 引擎的內(nèi)存管理模塊 一次釋放全部請求變量的內(nèi)存,而不是依次釋放每一個已分配的內(nèi)存塊。從 PHP 7.2.0 開始,此配置指令被移除。 快速停止的續(xù)發(fā)事件的處理已經(jīng)集成到 PHP 中, 只要有可能,PHP 會自動處理這些續(xù)發(fā)事件。
    更多配置項說明請參考 OPcache手冊。

OPcache函數(shù)

OPcache提供了一些內(nèi)置函數(shù),用于控制字節(jié)碼的緩存狀態(tài),使用前提是需要開啟 OPcache 擴展。

  • opcache_compile_file :不需要運行即可編譯緩存PHP腳本,如果單獨使用參數(shù) FILE 必填,FILE 為腳本路徑,例如:opcache_compile_file('index.php')
  • opcache_get_configuration :獲取 opcache 的當前所有配置信息
  • opcache_get_status :獲取 opcache 的當前緩存信息,信息包含共享內(nèi)存空間是否滿載等
  • opcache_invalidate :廢除腳本緩存,有兩個參數(shù),script (腳本路徑信息) 必填,force(boolean) 選填,如果 force 參數(shù)為 true 強制廢除緩存,如果為 false 或不填,那么只有當腳本的修改時間 比對應(yīng)字節(jié)碼的時間更新,腳本的緩存才會失效。
  • opcache_is_script_cached :檢查腳本是否在OPCache中緩存,參數(shù) FILE(文件路徑) 必填
  • opcache_reset :充值所有 opcache 緩存,等待下一次執(zhí)行編譯

開發(fā)注意事項

在本地開發(fā)環(huán)境中,建議關(guān)閉 OPcache 擴展,緩存可能會讓本地調(diào)試產(chǎn)生很多問題,減低開發(fā)效率。

關(guān)于共享內(nèi)存的知識擴展

共享內(nèi)存是一種在相同機器中的應(yīng)用程序之間交換數(shù)據(jù)的有效方式。內(nèi)存對于程序的執(zhí)行效率要高于磁盤I/O,所以合理的使用內(nèi)存可以提升程序的效率。它的應(yīng)用場景有web請求、數(shù)據(jù)庫查詢、模板引擎緩存、以及當前文章里提到的 OPcache 對于 PHP 的編譯緩存。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI