From 72e3e13ac4ecae6d9d81015e19f231adf3475a49 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 21 Feb 2025 10:45:40 +0100 Subject: [PATCH] fix(cron): Ignore time sensitivity when a class was explicitely scheduled Signed-off-by: Joas Schilling --- cron.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cron.php b/cron.php index ebc0ca358a7a2..993faae3caede 100644 --- a/cron.php +++ b/cron.php @@ -32,6 +32,7 @@ Arguments: job-classes Optional job class list to only run those jobs + Providing a class will ignore the time-sensitivity restriction Options: -h, --help Display this help message @@ -112,10 +113,14 @@ $appConfig->setValueString('core', 'backgroundjobs_mode', 'cron'); } + // a specific job class list can optionally be given as argument + $jobClasses = array_slice($argv, $verbose ? 2 : 1); + $jobClasses = empty($jobClasses) ? null : $jobClasses; + // Low-load hours $onlyTimeSensitive = false; $startHour = $config->getSystemValueInt('maintenance_window_start', 100); - if ($startHour <= 23) { + if ($jobClasses === null && $startHour <= 23) { $date = new \DateTime('now', new \DateTimeZone('UTC')); $currentHour = (int)$date->format('G'); $endHour = $startHour + 4; @@ -143,9 +148,6 @@ $endTime = time() + 14 * 60; $executedJobs = []; - // a specific job class list can optionally be given as argument - $jobClasses = array_slice($argv, $verbose ? 2 : 1); - $jobClasses = empty($jobClasses) ? null : $jobClasses; while ($job = $jobList->getNext($onlyTimeSensitive, $jobClasses)) { if (isset($executedJobs[$job->getId()])) { @@ -159,7 +161,7 @@ $timeBefore = time(); $memoryBefore = memory_get_usage(); $memoryPeakBefore = memory_get_peak_usage(); - + if ($verbose) { echo 'Starting job ' . $jobDetails . PHP_EOL; }