diff --git a/include/items.php b/include/items.php index 8aa292b308..6d45550a4f 100644 --- a/include/items.php +++ b/include/items.php @@ -846,7 +846,6 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa } } else { // This can happen - for example - if there are locking timeouts. - logger("Item wasn't stored - we quit here."); q("ROLLBACK"); // Store the data into a spool file so that we can try again later. @@ -856,8 +855,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa $arr['dsprsig'] = $encoded_signature; // Now we store the data in the spool directory - $spool = get_spoolpath().'/'.round(microtime(true) * 10000).".msg"; + $file = 'item-'.round(microtime(true) * 10000).".msg"; + $spool = get_spoolpath().'/'.$file; file_put_contents($spool, json_encode($arr)); + logger("Item wasn't stored - Item was spooled into file ".$file, LOGGER_DEBUG); return 0; } diff --git a/include/poller.php b/include/poller.php index b3a66fc389..925de3fe5b 100644 --- a/include/poller.php +++ b/include/poller.php @@ -556,6 +556,9 @@ function clear_worker_processes() { function poller_run_cron() { logger('Add cron entries', LOGGER_DEBUG); + // Check for spooled items + proc_run(PRIORITY_HIGH, "include/spool_post.php"); + // Run the cron job that calls all other jobs proc_run(PRIORITY_MEDIUM, "include/cron.php"); diff --git a/mod/worker.php b/mod/worker.php index aebffed744..c202a28d64 100644 --- a/mod/worker.php +++ b/mod/worker.php @@ -14,8 +14,10 @@ function worker_init($a){ return; } - // We don't need the following lines if we can execute background jobs + // We don't need the following lines if we can execute background jobs. + // So we just wake up the worker if it sleeps. if (function_exists("proc_open")) { + call_worker_if_idle(); return; }