X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fcronhooks.php;h=7524a0c3a8883c80b4a914e54093d7cfa9351508;hb=be35349495cdaeffa6087a51e661d4dcb83c65ca;hp=a4eb5fbb3e62f3671b8a99580e3be592c9126aa2;hpb=5b24050875bc0b2edfee92005bba7c5ef7a17cab;p=friendica.git diff --git a/include/cronhooks.php b/include/cronhooks.php index a4eb5fbb3e..7524a0c3a8 100644 --- a/include/cronhooks.php +++ b/include/cronhooks.php @@ -1,19 +1,21 @@ +set_baseurl(get_config('system','url')); + // Don't check this stuff if the function is called by the poller + if (App::callstack() != "poller_run") { + if ($a->maxload_reached()) + return; + if (App::is_already_running('cronhooks', 'include/cronhooks.php', 1140)) + return; + } load_hooks(); + if (($argc == 2) AND is_array($a->hooks) AND array_key_exists("cron", $a->hooks)) { + foreach ($a->hooks["cron"] as $hook) + if ($hook[1] == $argv[1]) { + logger("Calling cron hook '".$hook[1]."'", LOGGER_DEBUG); + call_single_hook($a, $name, $hook, $data); + } + return; + } + + $last = get_config('system','last_cronhook'); + + $poll_interval = intval(get_config('system','cronhook_interval')); + if(! $poll_interval) + $poll_interval = 9; + + if($last) { + $next = $last + ($poll_interval * 60); + if($next > time()) { + logger('cronhook intervall not reached'); + return; + } + } + + $a->set_baseurl(get_config('system','url')); + logger('cronhooks: start'); - $d = datetime_convert(); - call_hooks('cron', $d); + if (get_config("system", "worker") AND is_array($a->hooks) AND array_key_exists("cron", $a->hooks)) { + foreach ($a->hooks["cron"] as $hook) { + logger("Calling cronhooks for '".$hook[1]."'", LOGGER_DEBUG); + proc_run(PRIORITY_MEDIUM, "include/cronhooks.php", $hook[1]); + } + } else + call_hooks('cron', $d); + + logger('cronhooks: end'); + + set_config('system','last_cronhook', time()); return; } if (array_search(__file__,get_included_files())===0){ - cronhooks_run($argv,$argc); - killme(); + cronhooks_run($_SERVER["argv"],$_SERVER["argc"]); + killme(); }