好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題

解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題

熱門標簽:菏澤語音外呼系統運營商 廈門400電話辦理選易號網 如何在世界地圖標注 公司外呼系統中心 梧州市機器人外呼系統怎么樣 電子地圖標注怎么修改 臨沂crm外呼系統平臺 天客通地圖標注 地圖標注符號樣式有

問題背景

通過啟用Opcache的緩存優化,將PHP代碼預編譯為Opcode緩存到共享內存中供進程反復調用,從而減少了重復從磁盤解析PHP代碼的時間消耗,顯著的提高了PHP性能,提升了業務性能的調用,但是也引發了一些問題,就是我們每次更新了相應的PHP代碼后,web server 無法即時加載到更新后的代碼。

解決方案

(一)、設置Opcache腳本驗證時間

可以通過更改 Opcache 以下兩個配置選項來調整代碼重載時間

opcache.revalidate_freq=0 檢查腳本時間戳是否有更新的周期,以秒為單位。(如果設置為 0 會導致針對每個請求, OPcache 都會檢查腳本更新)

opcache.validate_timestamps=0 如果啟用,那么 OPcache 會每隔 opcache.revalidate_freq 設定的秒數 檢查腳本是否更新。

PS:在實際生產環境中,為了盡可能達到最優性能,盡量不開啟文件更新驗證,因為每次驗證都會重新預編譯PHP代碼到共享內存中。

(二)、重啟 | 重載 php-fpm 進程

每次重啟或重啟 php-fpm 進程便會重新解析PHP腳本文件,但是重啟 fpm 進程可能會導致請求中斷,從而導致寫入臟數據 或者 造成事務回滾等一系列異常。

重載相對于重啟則平順很多,不會導致用戶請求直接中斷,相對來說風險低很多,但是php-fpm 收到reload信號,便會向所有子進程發送SIGGUIT信號,同時注冊一個定時器,在規定的時間之內子進程沒有退出,接著在發送SIGTERM信號,結束子進程。如果在一秒之內子進程還是沒結束 直接發送SIGKILL 強制殺死。

重啟php-fpm

service php-fpm restart

重載php-fpm

services php-fpm reload

或 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

(三)、手動清理緩存

除了上面的兩種方式,還有更為穩妥一點的緩存清理,我們可以通過opcache_reset()和opcache_invalidate() 函數來刷新Opcache緩存。

opcache_reset() - 重置整個Opcode緩存,所有的PHP腳本將會被重新解析再預編譯為Opcode。

opcache_invalidate() - 清除指定腳本緩存,可以傳遞兩個參數,一個是刷新文件路徑,一個是force字段, 如果 force 沒有設置或者傳入的是 FALSE,那么只有當腳本的修改時間 比對應Opcode的時間更新時,腳本的緩存才會失效。

需要注意的是,當PHP以PHP-FPM的方式運行的時候,opcache的緩存是無法通過php命令進行清除的,只能通過http或cgi到php-fpm進程的方式來清除緩存,我們可以編寫一個對外接口,來達到清理緩存的目的。

相關實現如下(框架:laravel):

Route::any('cache-reset', function () {
  //重置整個Opcode緩存
  dd(opcache_reset());
});

Route::any('cache-update', function () {
  //清除掉最近一次更新文件的緩存
  exec('git diff --name-only HEAD~ HEAD', $output);
  foreach ($output as $file) {
    $path = base_path($file);
    opcache_invalidate($path, true);
  }
  dd('刷新完成');
});

總結

通過上面的三種策略,可以實現 Opcache 緩存更新的目的,但是在流量高峰期或者大流量的服務端,每次更新緩存都是一件非常損耗資源的事情,Opcache在重建緩存時,也不會禁止其他進程讀取,因此就會造成反復新建緩存,因此想要達到最佳的性能調配:

  • 最好不要在高峰期清理緩存
  • 高峰期不要頻繁的更新代碼,清理緩存,會造成重復新建緩存
  • 如果需要更新,可以嘗試削弱服務端權重,實現逐個更新的目的。
  • 如果需要強制更新,盡量選擇手動清除緩存的方式,來重建Opcache緩存,使代價最小化。

以上就是解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題的詳細內容,更多關于PHP Opcache 緩存刷新、代碼重載的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 詳解PHP7開啟OPcache和Swoole性能的提升對比
  • 如何使用OPCache提升PHP的性能
  • PHP如何開啟Opcache功能提升程序處理效率
  • php加速緩存器opcache,apc,xcache,eAccelerator原理與配置方法實例分析
  • 啟用OPCache提高PHP程序性能的方法
  • PHP解決高并發問題(opcache)

標簽:貴陽 瀘州 綿陽 雞西 黃石 郴州 迪慶 白城

巨人網絡通訊聲明:本文標題《解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題》,本文關鍵詞  解決,PHP,Opcache,緩存,刷新,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題》相關的同類信息!
  • 本頁收集關于解決PHP Opcache 緩存刷新、代碼重載出現無法更新代碼的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 一个人www免费观看视频| 红楼梦A版无删减版在线观看| 超污小说男男| 免费b站看大片真人直播| 男女69式互添在线观看| 6v76.com看A片| 扩宫虐菊惩罚调教扩张小说| 爱搞逼综合网| 交换+np+h+乱+群| 搞黄网站| 9总探花3000约一个| 《性/生活》无删减| 亚洲爱婷婷色婷婷五月| 国产高清无专砖区2021| 日本人甡交全过程| 巜交换做爰2李采潭| 欧美日韩不卡合集视频| 日日摸夜夜爽人人添| 在线免费小电影| 你是不是欠c了公交车| zljzljzlj亚洲乱熟无码| 国产精品???码一本A片| 鲁啊鲁啊鲁在线视频播放| 欧美粗大猛烈人妖| 短篇乱淫小说小可的奶水| 国产疯狂做爰无码A片| 贱奴被主人虐玩好爽| 黄色电影推荐| 娇妻互换高H黄辣文| 清纯唯美经典一区二区| 菠萝视频完整播放在线观看| 欧美线观看免费欧洲爱做网站 | 国内精品伊人久久久久7777人| 欧美黄色小视频| 动漫黄网站免费永久在线观看| 多强被?c到爽??H漫画| 劲爆欧美中文字幕精品视频| 香港电影埃博拉病毒| 摸麻麻下面她娇喘不停视频| 嘿咻漫画在线阅读页面免费动漫入口| 啊喔好深用力h嗯啊3p|