diff options
author | redmatrix <redmatrix@redmatrix.me> | 2015-09-24 22:51:47 -0700 |
---|---|---|
committer | redmatrix <redmatrix@redmatrix.me> | 2015-09-24 22:51:47 -0700 |
commit | 98f656cfcbaf81c001802dacd593ff9548345014 (patch) | |
tree | 96b8c7a565cde9691b2936b31a728644918ea33b | |
parent | e558ddae3f0e9cae8800caf878a07f5530d2e31f (diff) | |
download | volse-hubzilla-98f656cfcbaf81c001802dacd593ff9548345014.tar.gz volse-hubzilla-98f656cfcbaf81c001802dacd593ff9548345014.tar.bz2 volse-hubzilla-98f656cfcbaf81c001802dacd593ff9548345014.zip |
delivery optimisations
-rw-r--r-- | include/deliver_hooks.php | 29 | ||||
-rw-r--r-- | include/notifier.php | 33 |
2 files changed, 54 insertions, 8 deletions
diff --git a/include/deliver_hooks.php b/include/deliver_hooks.php new file mode 100644 index 000000000..f0d6ba1b1 --- /dev/null +++ b/include/deliver_hooks.php @@ -0,0 +1,29 @@ +<?php + + +require_once('include/cli_startup.php'); +require_once('include/zot.php'); + + +function deliver_hooks_run($argv, $argc) { + + cli_startup(); + + $a = get_app(); + + if($argc < 2) + return; + + + $r = q("select * from item where id = '%d'", + intval($argv[1]) + ); + if($r) + call_hooks('notifier_normal',$r[0]); + +} + +if (array_search(__file__,get_included_files())===0){ + deliver_hooks_run($argv,$argc); + killme(); +} diff --git a/include/notifier.php b/include/notifier.php index fd95d53e2..4ce0c7c9f 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -579,7 +579,7 @@ function notifier_run($argv, $argc){ if($deliveries_per_process <= 0) $deliveries_per_process = 1; - $deliver = array(); + $deliveries = array(); foreach($dhubs as $hub) { @@ -675,7 +675,7 @@ function notifier_run($argv, $argc){ ); } } - $deliver[] = $hash; + $deliveries[] = $hash; if(count($deliver) >= $deliveries_per_process) { proc_run('php','include/deliver.php',$deliver); @@ -684,18 +684,35 @@ function notifier_run($argv, $argc){ @time_sleep_until(microtime(true) + (float) $interval); } } + + if($normal_mode) { + $x = q("select * from hook where hook = 'notifier_normal'"); + if($x) + proc_run('php','deliver_hooks.php', $target_item['id']); + } + + if($deliveries) { + $deliver = array(); + + foreach($deliveries as $d) { + + $deliver[] = $d; + + if(count($deliver) >= $deliveries_per_process) { + proc_run('php','include/deliver.php',$deliver); + $deliver = array(); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); + } + } + } // catch any stragglers - if(count($deliver)) { + if($deliver) proc_run('php','include/deliver.php',$deliver); - } logger('notifier: basic loop complete.', LOGGER_DEBUG); - - if($normal_mode) - call_hooks('notifier_normal',$target_item); - call_hooks('notifier_end',$target_item); |