* exceptions in async jobs no longer stop other jobs

This commit is contained in:
Ralf Becker 2011-03-21 13:18:11 +00:00
parent 3c8abc1971
commit 8db999925d

View File

@ -31,7 +31,7 @@ class asyncservice
var $debug = 0; var $debug = 0;
/** /**
* Line in crontab set by constructor with absolute path * Line in crontab set by constructor with absolute path
* *
* @var string * @var string
*/ */
var $cronline = '/phpgwapi/cron/asyncservices.php default'; var $cronline = '/phpgwapi/cron/asyncservices.php default';
@ -414,8 +414,7 @@ class asyncservice
if ($lang != $GLOBALS['egw_info']['user']['preferences']['common']['lang']) if ($lang != $GLOBALS['egw_info']['user']['preferences']['common']['lang'])
{ {
unset($GLOBALS['lang']); translation::init();
translation::add_app('common');
} }
} }
else else
@ -430,8 +429,15 @@ class asyncservice
{ {
$job['data'] += array_diff_key($job,array('data' => false)); $job['data'] += array_diff_key($job,array('data' => false));
} }
ExecMethod($job['method'],$job['data']); try
{
ExecMethod($job['method'],$job['data']);
}
catch(Exception $e)
{
// log the exception to error_log, but continue running other async jobs
_egw_log_exception($e);
}
// re-read job, in case it had been updated or even deleted in the method // re-read job, in case it had been updated or even deleted in the method
$updated = $this->read($id); $updated = $this->read($id);
if ($updated && isset($updated[$id])) if ($updated && isset($updated[$id]))