0
ini_set('memory_limit', '1G');
$gmworker= new GearmanWorker();
$gmworker->addServer();
$gmworker->addFunction("create_job_process", "worker_create_job");
$gmworker->setTimeout(-1);
print "Waiting for job...\n";
while($gmworker->work())
{
if ($gmworker->returnCode() != GEARMAN_SUCCESS)
{
echo "return_code: " . $gmworker->returnCode() . "\n";
break;
}
if ($gmworker->returnCode() == GEARMAN_SUCCESS)
{
echo "success\n\n";
break;
}
sleep(1);
}
當「成功」顯示在日誌中,我可以看到內存的使用越來越多,然後得到了錯誤:Gearman的PHP不退出和內存耗盡
PHP致命錯誤:用盡1073741824個字節允許內存大小(試圖分配24個字節)
嗯,如果顯示成功消息,while循環將退出。那麼你爲什麼在標題中說它不會退出?你想要使用'die()'而不是break來使它在成功時退出。 – hakre
我用break,exit,沒區別 –
如果你回顯$ gmworker-> returnCode(),它在while循環中吐出了什麼值?有沒有可能mem漏洞在你的worker_create_job函數中? –