我在处理齿轮工人时遇到了麻烦,致命的错误。 Gearman守护进程因php致命错误而停止。
我在这个网址http://www.vancelucas.com/blog/handling-exceptions-in-gearman-tasks-even-background-ones/找到了解决方案,但它对我不起作用。这是我的齿轮工人鳕鱼:
$task = "send_lead";
$gmw->addFunction("sending_lead", function() use($task) {
try {
$result = call_user_func_array($task, func_get_args());
} catch(\Exception $e) {
$result = GEARMAN_WORK_EXCEPTION;
echo "Gearman: CAUGHT EXCEPTION: " . $e->getMessage();
// Send exception to Exceptional so it can be logged with details
Exceptional::handle_exception($e, FALSE);
}
return $result;
});
while(1)
$gmw->work();
function send_lead($job)
{
$send_lead = new Frontend_Model_Index();
$send_lead->lead(json_decode($job->workload()));
}
顺便说一下,我使用的是zend 1.1。
更新
错误是PHP致命错误:在非对象中调用成员函数getSource_state()。
这是好的错误。但是如何处理这个错误。我不希望因为任何错误而终止deamon,致命或不致。