2020年5月7日 星期四

PHP程式更新後確沒有更新,有沒有想到是程式碼cache(opcache)?


最近在維護一個客戶的PHP系統
建置及虛擬空間都是別人的,所以很多設定都是不明確的

因此程式碼調整後更新上去,發現似乎沒有作用
花了不少時間確認自己的寫法,最後確認應該不是自己的問題
才想到會不會是 cache  造成?

寫了幾隻小程式,新寫的程式一丟上顯示符合預期
再改再丟上去更新後,顯示還是舊的版本,Shit 真的猜中了

再用個phpinfo() 來看看設定

嗯.....出現了以下錯誤

Warning:phpinfo() has been disabled

很好,沒有php 沒有啟用 phpinfo ,多半管這麼多的,一定設定了很多怪東東
上網查了一下php 的 cache 解決方案

最多人在提的就是 APC  及OPcache

先來試試APC,查了一下 除了設定參數外,可以用以下函式來清除快取,這種最好測試了

apc_clear_cache();
執行後出現了  undefined function ...所以看來不是啟用APC
再來換OPcache,查了一下,一樣他有函式就可以清除快取,執行如下:

opcache_reset();
用了,哈~真的就是它,程式總算可以正常了


相關參考連結:
http://blog.roachking.net/blog/2012/11/30/apc-for-faster-php/
https://www.php.net/manual/en/function.opcache-reset.php