先說一下背景
計劃任務跑laravel腳本,結果發現內存蹭蹭的上漲,很快爆內存不夠用錯誤,看了下數據大概3萬左右
腳本會循環執行數據庫操作
先上一張內存使用的圖,隨着循環執行,內存一直不釋放,直到爆出內存不夠用的錯誤
使用 memory_get_usage() 獲取程序執行內存
經過各種排查,各種刪除變量,還是沒用,最後終於排查出來是因爲 DB::connection()->enableQueryLog(); 這貨引起的,把它去掉以後,程序正常執行,內存沒有再泄漏
在laravel的github issue裏面,也有人問過同樣的問題,還是需要多看官方文檔和issue,不過更重要的是要學會分析排查問題的方式和方法,調試工具 xdebug 和 tideways_xhprof 要學會利用起來