diff --git a/include/notifier.php b/include/notifier.php index d7e8a9ccec..28d437f4ce 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -55,19 +55,6 @@ function notifier_run(&$argv, &$argc){ return; } - // Inherit the priority - $queue = dba::select('workerqueue', array('priority', 'created'), array('pid' => getmypid()), array('limit' => 1)); - if (dbm::is_result($queue)) { - $priority = (int)$queue['priority']; - $process_created = $queue['created']; - logger('inherited priority: '.$priority); - } else { - // Normally this shouldn't happen. - $priority = PRIORITY_HIGH; - $process_created = datetime_convert(); - logger('no inherited priority! Something is wrong.'); - } - logger('notifier: invoked: ' . print_r($argv,true), LOGGER_DEBUG); $cmd = $argv[1]; @@ -361,7 +348,7 @@ function notifier_run(&$argv, &$argc){ // a delivery fork. private groups (forum_mode == 2) do not uplink if ((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) { - proc_run($priority, 'include/notifier.php', 'uplink', $item_id); + proc_run($a->queue['priority'], 'include/notifier.php', 'uplink', $item_id); } $conversants = array(); @@ -500,7 +487,7 @@ function notifier_run(&$argv, &$argc){ } logger("Deliver ".$target_item["guid"]." to ".$contact['url']." via network ".$contact['network'], LOGGER_DEBUG); - proc_run(array('priority' => $priority, 'created' => $process_created, 'dont_fork' => true), + proc_run(array('priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true), 'include/delivery.php', $cmd, $item_id, $contact['id']); } } @@ -566,7 +553,7 @@ function notifier_run(&$argv, &$argc){ if ((! $mail) && (! $fsuggest) && (! $followup)) { logger('notifier: delivery agent: '.$rr['name'].' '.$rr['id'].' '.$rr['network'].' '.$target_item["guid"]); - proc_run(array('priority' => $priority, 'created' => $process_created, 'dont_fork' => true), + proc_run(array('priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true), 'include/delivery.php', $cmd, $item_id, $rr['id']); } } @@ -607,7 +594,7 @@ function notifier_run(&$argv, &$argc){ } // Handling the pubsubhubbub requests - proc_run(array('priority' => PRIORITY_HIGH, 'created' => $process_created, 'dont_fork' => true), + proc_run(array('priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true), 'include/pubsubpublish.php'); } diff --git a/include/poller.php b/include/poller.php index 8784931d3c..89b0a24dbc 100644 --- a/include/poller.php +++ b/include/poller.php @@ -84,6 +84,9 @@ function poller_run($argv, $argc){ // We fetch the next queue entry that is about to be executed while ($r = poller_worker_process()) { + // Assure that the priority is an integer value + $r[0]['priority'] = (int)$r[0]['priority']; + // If we got that queue entry we claim it for us if (!poller_claim_process($r[0])) { dba::unlock(); @@ -255,10 +258,12 @@ function poller_exec_function($queue, $funcname, $argv) { // But preserve the old one for the worker $old_process_id = $a->process_id; $a->process_id = uniqid("wrk", true); + $a->queue = $queue; $funcname($argv, $argc); $a->process_id = $old_process_id; + unset($a->queue); $duration = number_format(microtime(true) - $stamp, 3); diff --git a/include/pubsubpublish.php b/include/pubsubpublish.php index 7c70059f90..3265fd1e16 100644 --- a/include/pubsubpublish.php +++ b/include/pubsubpublish.php @@ -7,27 +7,18 @@ require_once('include/items.php'); require_once('include/ostatus.php'); function pubsubpublish_run(&$argv, &$argc){ + global $a; if ($argc > 1) { $pubsubpublish_id = intval($argv[1]); } else { - // Inherit the creation time - $queue = dba::select('workerqueue', array('created'), array('pid' => getmypid()), array('limit' => 1)); - if (dbm::is_result($queue)) { - $process_created = $queue['created']; - } else { - // Normally this shouldn't happen. - $process_created = datetime_convert(); - logger('no inherited priority! Something is wrong.'); - } - // We'll push to each subscriber that has push > 0, // i.e. there has been an update (set in notifier.php). $r = q("SELECT `id`, `callback_url` FROM `push_subscriber` WHERE `push` > 0"); foreach ($r as $rr) { logger("Publish feed to ".$rr["callback_url"], LOGGER_DEBUG); - proc_run(array('priority' => PRIORITY_HIGH, 'created' => $process_created, 'dont_fork' => true), + proc_run(array('priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true), 'include/pubsubpublish.php', $rr["id"]); } } diff --git a/src/App.php b/src/App.php index f6b568ae8a..94ca007511 100644 --- a/src/App.php +++ b/src/App.php @@ -100,6 +100,7 @@ class App { */ public $template_engine_instance = array(); public $process_id; + public $queue; private $ldelim = array( 'internal' => '', 'smarty3' => '{{'