日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php opcache 坑,PHP7 opcache缓存清理问题

發布時間:2025/5/22 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php opcache 坑,PHP7 opcache缓存清理问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP7 opcache緩存清理問題

背景

OPcache通過opcode的緩存和優化,提供更快的PHP執行過程。

業務在php7環境運營時,為了提升請求的性能,在PHP7環境中配置OPcache擴展。

業務在更新代碼后,訪問業務系統時提示無法找到對應的文件或請求的內容還是更新前的舊內容,

webserver重啟以后,請求訪問到的文件就都是最新的了,問題就貌似解決了。

問題分析

根據現象分析,代碼更新后請求找不到新增的文件,尤其是還在請求已有文件更新前的內容,那么可能跟緩存有關系,考慮到跟業務代碼邏輯無關,關閉opcache的配置問題就不再出現,基本上可以定位到問題出在opcache的配置上。

cat?/usr/local/php/etc/subconfig/opcache.inizend_extension=opcache.soopcache.enable=1opcache.revalidate_freq=0opcache.validate_timestamps=0opcache.max_accelerated_files=7963opcache.memory_consumption=192opcache.interned_strings_buffer=16opcache.fast_shutdown=1opcache.enable_cli=1

opcache.enable?啟用操作碼緩存,默認為“1”

如果禁用此選項,則不會優化和緩存代碼。 在運行期使用 ini_set() 函數只能禁用 opcache.enable 設置,不可以啟用此設置。 如果在腳本中嘗試啟用此設置項會產生警告。

opcache.enable_cli??僅針對 CLI 版本的 PHP 啟用操作碼緩存。

通常被用來測試和調試。

opcache.revalidate_freq=0 ?檢查腳本時間戳是否有更新的周期,以秒為單位。

設置為 0 會導致針對每個請求, OPcache 都會檢查腳本更新。

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

如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函數來手動重置 OPcache,也可以 通過重啟 Web 服務器來使文件系統更改生效。

最初的配置是:

opcache.revalidate_freq=60,opcache.validate_timestamps=1

即每60秒檢測一次更新字節碼緩存,業務代碼更新后可能需要60秒以后才能訪問到最新的內容,也就出現了最初訪問不到新增的內容。

代碼更新方式

php代碼的更新方式有兩種,一種是覆蓋webserver配置的目錄下的文件來更新,一種是每次都部署一個全量包目錄,然后軟鏈接到webserver指定的目錄。

第一種覆蓋更新的方式,如果使用在過期時間后自動清理opcache緩存內容的話,更新操作如果有延遲,就會出現新舊代碼文件混合在一起的情況。

第二種全量包目錄發布后,軟鏈接到webserver指定路徑的方式,雖然不會存在新舊文件混合的問題,但是在未自動清理時,即便webserver已經鏈接到webserver對應目錄,業務訪問的還是舊文件。

代碼緩存的問題

目前使用rsync同步目錄文件的方式是我們更新代碼的主要方式,最初使用每60s定時清理opcache的緩存文件,在60s內更新的文件不會生效,就導致了業務反饋代碼更新后訪問不到的問題。

使用定時更新代碼緩存的問題,還有更新文件較多時,代碼文件發布的過程中緩存發生更新,將會有60s新舊文件的緩存混合存在的問題。

根據相關研究人員推薦,如果采用覆蓋更新代碼文件時,更新操作完畢后,手動清理緩存比較合適。opcache.validate_timestamps=0

即,將oopcache.validate_timestamps設置為0。

配置了opcache.validate_timestamps值為0,必須手動清空Zend OPcache緩存的字節碼,才能訪問到最新的文件內容。適合在生產環境中設置為0,但在開發環境會帶來不便,可以在開發環境中這樣配置啟用自動驗證緩存功能:

opcache.validate_timestamps=1

opcache.revalidate_freq=0

手動清理緩存

除了重啟php-fpm的進程可以清理opcache緩存外,

手動清理緩存涉及到的opcache函數主要為:opcache_reset()和opcache_invalidate() 。123boolean?opcache_reset?(?void?)該函數將重置整個字節碼緩存。在調用?opcache_reset()?之后,所有的腳本將會重新載入并且在下次被點擊的時候重新解析。

需要注意的是,當PHP以PHP-FPM的方式運行的時候,opcache的緩存是無法通過php命令進行清除的,只能通過http或cgi到php-fpm進程的方式來清除緩存。In?some?(most?)?systems,PHP's?CLI?has?a?separate?opcode?cache?to?the?one?used?by?the?web?server?,or?PHP-FPM?process,which?means?running?opcache_reset()?in?the?CLI,won't?reset?the?webserver/fpm?opcode?cache,?and?vice-versa.

曲線救國,使用命令行清理php-fpm的opcache緩存:#!/bin/bashcgi-fcgi?-v??>?/dev/null?2>&1||?yum?--enablerepo=epel?install?fcgi?-y??>?/dev/null?2>&1echo?'<?php ?opcache_reset();?echo?"ok\n";'?>?/tmp/php-fpm-opcache-reset.php;SCRIPT_FILENAME=/tmp/php-fpm-opcache-reset.php?\REQUEST_METHOD=GET?\cgi-fcgi?-bind?-connect?127.0.0.1:9000;rm?-f?/tmp/php-fpm-opcache-reset.php;

opcache_invalidate ?廢除指定腳本緩存boolean?opcache_invalidate?(?string?$script?[,?boolean?$force?=?FALSE?]?)該函數的作用是使得指定腳本的字節碼緩存失效。?如果?force?沒有設置或者傳入的是?FALSE,那么只有當腳本的修改時間?比對應字節碼的時間更新,腳本的緩存才會失效。參數?script緩存需要被作廢對應的腳本路徑force如果該參數設置為TRUE,那么不管是否必要,該腳本的緩存都將被廢除。

opcache_invalidate可以針對單個或幾個腳本進行來清理緩存。

總結

如果代碼發布是全量發布,切換軟鏈接的方式,可以設置opcache.validate_timestamps=1和opcache.validate_timestamps=1來定時自動更新緩存。

如果代碼發布是覆蓋更新舊目錄,則可以重啟php-fpm及在腳本中或代碼文件中使用opcache_reset函數來清理所有緩存。

如果可以獲取到更新的代碼文件列表,則可以使用opcache_invalidate函數來清理代碼,同時也可以避免影響到其他業務的緩存。

總結

以上是生活随笔為你收集整理的php opcache 坑,PHP7 opcache缓存清理问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 韩日少妇 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 丰满岳妇乱一区二区三区 | 国产ts系列 | 成都4电影免费高清 | 亚洲午夜av| 亚洲欧美日本韩国 | 日批视频在线播放 | 一区二区日韩在线观看 | 久久人人爽爽人人爽人人片av | 日韩国产一区二区 | 欧美激情福利 | 丰满人妻翻云覆雨呻吟视频 | 日韩欧美国产中文字幕 | 欧美wwwxxxx| 性欧美69| 日韩一区二区毛片 | 羞羞涩| 欧洲日韩一区二区三区 | 日韩va| 日韩精品在线免费观看 | 成人国产精品久久久 | 99热成人 | 老牛嫩草二区三区观影体验 | 一区二区乱子伦在线播放 | 国产高清在线观看 | 欧美伦理片网站 | 欧美性猛交 xxxx | 国产在线青青草 | 天天操好逼 | 成人精品一区二区三区在线 | 操她视频网站 | 蜜臀久久精品久久久久 | 久久一本综合 | 羞羞草影院 | 国产毛片自拍 | 国产综合在线播放 | 亲女禁h啪啪宫交 | 中文有码在线播放 | 男生操女生屁股 | 欧美色v | 国语对白真实视频播放 | 国产无套内射普通话对白 | 天堂一区二区三区 | 激情综合网五月激情 | 少妇一区二区三区 | 欧美a在线观看 | 色吧在线视频 | 色爱综合区 | 日韩精品一二三四 | 亚洲一线视频 | 国产在线网址 | 淫欲av| 欧美顶级少妇做爰 | av激情在线观看 | 中文字幕25页 | 国产成人精品在线视频 | 午夜精品网站 | 丝袜脚交国产在线观看 | 成人在线免费观看网站 | 日本黄色一区二区三区 | 国产欧美在线观看 | 天堂一级片 | 麻豆传谋在线观看免费mv | 国产真实乱 | 日韩在线一级 | 天天操天天爽天天射 | www..com黄色| 少妇脱了内裤让我添 | 午夜性影院 | 青青草逼| 色秀av| xxxx国产视频 | 91av免费 | 黄色av网址在线观看 | 久久精品资源 | 海角国产乱辈乱精品视频 | 国产伦精品一区二区三区网站 | 激情视频一区二区 | 日本大乳奶做爰 | 久久久精品人妻一区二区三区 | 粉嫩aⅴ一区二区三区四区五区 | 香蕉污视频在线观看 | 俺也来俺也去俺也射 | 国产高清视频一区 | 九九热精品 | 精品国产999 | 日韩色视频在线观看 | 欧美成人精品欧美一级私黄 | 日本亚洲视频 | 啪啪网站免费观看 | 亚洲国产中文字幕 | 黄色理论视频 | 四虎永久网址 | 国产精品分类 | 五月天中文字幕av | 视频在线观看电影完整版高清免费 | 日韩一本在线 | 成人av日韩|