1. 程式人生 > >php生產環境部署程式碼後訪問的以前的程式碼

php生產環境部署程式碼後訪問的以前的程式碼

有一次上線,運維部署程式碼後測試,發現沒有新加的功能,訪問的還是更新前的功能。

上伺服器,檢視有更新後的程式碼,

為保留上個版本的程式碼,採用的是每個版本一個資料夾,軟鏈最新的版本為線上版本,

進入最新資料夾發現,沒有產生任何日誌,就推測訪問的是上個版本的程式碼,

進入上個版本發現有訪問日誌,日誌檔案一般一天產生一次,新的明天才會在新版本產生。

找了很久沒有找到原因,後來運維遮蔽了伺服器訪問,重啟php-fpm後可以訪問到新的程式碼

原因是opcache快取,雖然軟連線指向的目錄改變了,但是opcache識別到的目錄是一樣的,使用了直接快取的檔案,

所以訪問的是舊版本。

可以修改php.ini裡配置:

opcache.validate_timestamps=1
opcache.revalidate_freq=0

這樣opcache就會每次都驗證PHP檔案的修改時間戳,如果PHP檔案被修改過,opcache會重新快取新的PHP檔案opcode到記憶體.