定時任務(wù),每分鐘運行一次check()方法,這個方法里面,會使用Guzzle遠(yuǎn)程請求一個接口,接口請求速度在500ms-1s左右,根據(jù)接口返回的信息再做一些邏輯判斷,很簡單的一個接口。
但是只要我使用定時任務(wù),內(nèi)存就會一直增長,直到銷毀內(nèi)存,又會增長,請問像我這種情況的定時任務(wù),應(yīng)該如何優(yōu)化,剛從php-fpm改過來,對內(nèi)存的概念還不是很清楚,知道內(nèi)存泄露,但是不知道該如何排除與處理。
希望各位大神能指教一二。
public function onWorkerStart()
{
// 每分鐘執(zhí)行一次
new Crontab('0 */1 * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
(new VoidedPurchasesCrontabController())->check();
});
}
進(jìn)程啟動后隨著請求訪問,內(nèi)存有增長是正常情況,只要不是無限增長就不是內(nèi)存泄露。
那像我這種情況,有什么好的解決辦法沒有?因為我的機(jī)器內(nèi)存不大,怎么控制,我接求的接口數(shù)據(jù)也不大。我每請求一次Guzzle,接收返回數(shù)據(jù),然后使用unset刪除?
http://wtbis.cn/doc/webman/process.html
像文檔里面的, 使用自定義進(jìn)程,是否可以搞定我的需求。開一個進(jìn)程專門跑這個定時任務(wù)。
最近終于發(fā)現(xiàn)了原因,原來我請求的這個方法里會連接google服務(wù),我是直接new的,每執(zhí)行一次,實例化一次連接,因此連接被保存下來,我現(xiàn)在改成單例就解決了內(nèi)存一直增長的問題。