這樣寫 webman框架里內(nèi)存不能釋放
我現(xiàn)在用
posix_kill(posix_getppid(), SIGUSR1);
來釋放內(nèi)存
還有其他方法嗎
$inputFileName = '/public/upload/files/20250307/67ca6427f1a7.xlsx';
$reader = IOFactory::createReaderForFile($inputFileName);
$reader->setReadDataOnly(true); // 僅讀取數(shù)據(jù),而不解析格式
// 加載文件
$spreadsheet = $reader->load($inputFileName);
// 選擇第一個工作表
$worksheet = $spreadsheet->getActiveSheet();
unset($reader, $spreadsheet, $worksheet);
// 手動觸發(fā)垃圾回收機(jī)制
gc_mem_caches();
不確認(rèn)你是怎么判斷內(nèi)存不釋放的?
php會自己的內(nèi)存申請釋放機(jī)制,為了性能php可能有時候保留一些內(nèi)存不釋放,以便下次使用,是正常現(xiàn)象。
一般只要內(nèi)存不是無限增長就沒問題。
除非phpexcel自身有內(nèi)存泄漏,使用過程中內(nèi)存無限增大才需要處理,這個需要phpexcel修復(fù),webman無法控制。
不過即使phpexcel或者業(yè)務(wù)產(chǎn)生了內(nèi)存泄漏,webman有監(jiān)控內(nèi)存的邏輯,內(nèi)存超過一定限制會平滑重啟對應(yīng)進(jìn)程,對業(yè)務(wù)基本0影響。