diff --git a/include/cron.php b/include/cron.php index 0c9d6baa58..46067d76da 100644 --- a/include/cron.php +++ b/include/cron.php @@ -225,9 +225,6 @@ function cron_run(&$argv, &$argc){ $d = datetime_convert(); - if(! $restart) - proc_run('php','include/cronhooks.php'); - // Only poll from those with suitable relationships, // and which have a polling address and ignore Diaspora since // we are unable to match those posts with a Diaspora GUID and prevent duplicates. @@ -339,6 +336,6 @@ function cron_run(&$argv, &$argc){ } if (array_search(__file__,get_included_files())===0){ - cron_run($_SERVER["argv"],$_SERVER["argc"]); - killme(); + cron_run($_SERVER["argv"],$_SERVER["argc"]); + killme(); } diff --git a/include/cronhooks.php b/include/cronhooks.php index 26cab3cf92..d5b4f3bf6f 100644 --- a/include/cronhooks.php +++ b/include/cronhooks.php @@ -11,11 +11,11 @@ function cronhooks_run(&$argv, &$argc){ } if(is_null($db)) { - @include(".htconfig.php"); - require_once("include/dba.php"); - $db = new dba($db_host, $db_user, $db_pass, $db_data); - unset($db_host, $db_user, $db_pass, $db_data); - }; + @include(".htconfig.php"); + require_once("include/dba.php"); + $db = new dba($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); + }; require_once('include/session.php'); require_once('include/datetime.php'); @@ -35,17 +35,31 @@ function cronhooks_run(&$argv, &$argc){ } } + $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; + } + } + $lockpath = get_lockpath(); if ($lockpath != '') { $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"); + $pidfile->kill(); + logger("cronhooks: killed stale process"); // Calling a new instance proc_run('php','include/cronhooks.php'); - } + } exit; } } @@ -62,10 +76,12 @@ function cronhooks_run(&$argv, &$argc){ logger('cronhooks: end'); + set_config('system','last_cronhook', time()); + return; } if (array_search(__file__,get_included_files())===0){ - cronhooks_run($_SERVER["argv"],$_SERVER["argc"]); - killme(); + cronhooks_run($_SERVER["argv"],$_SERVER["argc"]); + killme(); } diff --git a/include/poller.php b/include/poller.php index 053880bc59..e4b0b092f4 100644 --- a/include/poller.php +++ b/include/poller.php @@ -30,6 +30,9 @@ function poller_run(&$argv, &$argc){ // Run the cron job that calls all other jobs proc_run("php","include/cron.php"); + // Run the cronhooks job separately from cron for being able to use a different timing + proc_run("php","include/cronhooks.php"); + // Cleaning dead processes $r = q("SELECT DISTINCT(`pid`) FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'"); foreach($r AS $pid)