opcache的檢測檔案更新的小坑

2021-09-19 08:34:29 字數 1087 閱讀 5128

昨晚線上出故障,緊急處理切換容災後緩解了故障,解決故障後從容災切換回正式服務時發現php檔案更新無效,重啟fpm後才生效。下面記錄覆盤追查的過程。

因為是php檔案更新不生效,所以馬上懷疑到opcache上面,到線上看了一眼php.ini,果然使用了opcache,並且檢測間隔時間設定為60秒。檢視昨晚的日誌,更新不生效持續時間遠遠大於60秒,所以這個檢測間隔時間的問題可以pass了,我們繼續。

下面總結一下填坑過程中查的一些相關的知識點

在php.ini中增加opcache時需要使用zend_extension,而不是extension,不然會得到以下warning

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

本次涉及到的有兩個引數

revalidate_freq,預設2

檢查指令碼時間戳是否有更新的週期,以秒為單位。 設定為 0 會導致針對每個請求, opcache 都會檢查指令碼更新

validate_timestamps,預設1

如果啟用,那麼 opcache 會每隔 opcache.revalidate_freq 設定的秒數 檢查指令碼是否更新。 如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函式來手動重置 opcache,也可以 通過重啟 web 伺服器來使檔案系統更改生效。

access time 表示我們最後一次訪問檔案的時間

modify time 表示我們最後一次修改檔案的時間

change time 表示我們最後一次對檔案屬性改變的時間,包括許可權,大小,屬性等等

c/c++中也可以使用stat方法查詢檔案的這3個時間屬性,一般應用都會通過modify time判斷檔案是否更新,我們本次踩坑就是因為檔案是mv操作的,modity time沒有更新,所以opcache沒有更新。

檔案安全檢測 持續更新

在企業安全事件應急處置和異常行為分析的時候,往往需要對檔案 windows linux android等平台的檔案 進行安全檢測,確認該檔案是否為惡意檔案 病毒 木馬 後門 webshell 惡意廣告軟體 流氓軟體等 以便確認檔案的安全性,了解安全事件的攻擊 virustotal 多引擎查殺 免費 ...

陣列的更新檢測

vue 將被偵聽的陣列的變更方法進行了包裹,所以它們也將會觸發檢視更新。這些被包裹過的方法包括 push 陣列的後面插入元素 pop 從陣列的後面刪除乙個元素 shift 從陣列的前面刪除乙個元素 unshift 從陣列的前面插入乙個元素 splice 陣列的剪貼 插入 刪除等操作 sort 陣列的...

Windows PHP 開啟opcache的方法

php opcache可以提公升效能.windows php 配置 opcache 的方法如下 1 先檢查php目錄下ext目錄中有沒有 php opcache.dll 2 將 zend extension php opcache.dll 複製到 php.ini 檔案中的 php 區段下面 如果將 ...