我无法处理齿轮工,致命错误。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()。
这是好的错误。但是如何处理该错误。我不希望守护进程因为任何错误而终止,无论是否致命。