X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Fcronhooks.php;h=3a09da48ceb3a16dba777731ea2e3e72efb058ea;hb=b141a60d5f45ec7afcf0cc221ee652671ce0226c;hp=15d49fe5474b32101c60ff5ba90b58c383f1ac39;hpb=e75f88d7fe964b5ff1a51867c8168cc1f7e3eed8;p=friendica.git diff --git a/include/cronhooks.php b/include/cronhooks.php index 15d49fe547..3a09da48ce 100644 --- a/include/cronhooks.php +++ b/include/cronhooks.php @@ -9,7 +9,7 @@ function cronhooks_run(&$argv, &$argc){ if(is_null($a)) { $a = new App; } - + if(is_null($db)) { @include(".htconfig.php"); require_once("include/dba.php"); @@ -24,11 +24,28 @@ function cronhooks_run(&$argv, &$argc){ load_config('config'); load_config('system'); - $lockpath = get_config('system','lockpath'); + $maxsysload = intval(get_config('system','maxloadavg')); + if($maxsysload < 1) + $maxsysload = 50; + if(function_exists('sys_getloadavg')) { + $load = sys_getloadavg(); + if(intval($load[0]) > $maxsysload) { + logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.'); + return; + } + } + + $lockpath = get_lockpath(); if ($lockpath != '') { - $pidfile = new pidfile($lockpath, 'cron.lck'); + $pidfile = new pidfile($lockpath, 'cronhooks'); if($pidfile->is_already_running()) { logger("cronhooks: Already running"); + if ($pidfile->running_time() > 19*60) { + $pidfile->kill(); + logger("cronhooks: killed stale process"); + // Calling a new instance + proc_run('php','include/cronhooks.php'); + } exit; } } @@ -38,16 +55,17 @@ function cronhooks_run(&$argv, &$argc){ load_hooks(); logger('cronhooks: start'); - $d = datetime_convert(); call_hooks('cron', $d); + logger('cronhooks: end'); + return; } if (array_search(__file__,get_included_files())===0){ - cronhooks_run($argv,$argc); + cronhooks_run($_SERVER["argv"],$_SERVER["argc"]); killme(); }