定時(shí)任務(wù),每分鐘運(yùn)行一次check()方法,這個(gè)方法里面,會(huì)使用Guzzle遠(yuǎn)程請(qǐng)求一個(gè)接口,接口請(qǐng)求速度在500ms-1s左右,根據(jù)接口返回的信息再做一些邏輯判斷,很簡(jiǎn)單的一個(gè)接口。
但是只要我使用定時(shí)任務(wù),內(nèi)存就會(huì)一直增長(zhǎng),直到銷毀內(nèi)存,又會(huì)增長(zhǎng),請(qǐng)問(wèn)像我這種情況的定時(shí)任務(wù),應(yīng)該如何優(yōu)化,剛從php-fpm改過(guò)來(lái),對(duì)內(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)程啟動(dòng)后隨著請(qǐng)求訪問(wèn),內(nèi)存有增長(zhǎng)是正常情況,只要不是無(wú)限增長(zhǎng)就不是內(nèi)存泄露。
那像我這種情況,有什么好的解決辦法沒(méi)有?因?yàn)槲业臋C(jī)器內(nèi)存不大,怎么控制,我接求的接口數(shù)據(jù)也不大。我每請(qǐng)求一次Guzzle,接收返回?cái)?shù)據(jù),然后使用unset刪除?
這個(gè)定時(shí)任務(wù)在我主項(xiàng)目下面,直接跑的。這個(gè)定時(shí)任務(wù),我如何給他單獨(dú)開一個(gè)進(jìn)程?原諒我剛接觸這個(gè),文檔里面我似乎沒(méi)有看到類似的方法。
http://www.wtbis.cn/doc/webman/process.html
像文檔里面的, 使用自定義進(jìn)程,是否可以搞定我的需求。開一個(gè)進(jìn)程專門跑這個(gè)定時(shí)任務(wù)。
最近終于發(fā)現(xiàn)了原因,原來(lái)我請(qǐng)求的這個(gè)方法里會(huì)連接google服務(wù),我是直接new的,每執(zhí)行一次,實(shí)例化一次連接,因此連接被保存下來(lái),我現(xiàn)在改成單例就解決了內(nèi)存一直增長(zhǎng)的問(wèn)題。