|
|
|
|
@ -110,6 +110,28 @@ try { |
|
|
|
|
$config->setAppValue('core', 'backgroundjobs_mode', 'cron'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Low-load hours |
|
|
|
|
$onlyTimeSensitive = false; |
|
|
|
|
$startHour = $config->getSystemValueInt('maintenance_window_start', 100); |
|
|
|
|
if ($startHour <= 23) { |
|
|
|
|
$date = new \DateTime('now', new \DateTimeZone('UTC')); |
|
|
|
|
$currentHour = (int) $date->format('G'); |
|
|
|
|
$endHour = $startHour + 4; |
|
|
|
|
|
|
|
|
|
if ($startHour <= 20) { |
|
|
|
|
// Start time: 01:00 |
|
|
|
|
// End time: 05:00 |
|
|
|
|
// Only run sensitive tasks when it's before the start or after the end |
|
|
|
|
$onlyTimeSensitive = $currentHour < $startHour || $currentHour > $endHour; |
|
|
|
|
} else { |
|
|
|
|
// Start time: 23:00 |
|
|
|
|
// End time: 03:00 |
|
|
|
|
$endHour -= 24; // Correct the end time from 27:00 to 03:00 |
|
|
|
|
// Only run sensitive tasks when it's after the end and before the start |
|
|
|
|
$onlyTimeSensitive = $currentHour > $endHour && $currentHour < $startHour; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Work |
|
|
|
|
$jobList = \OC::$server->getJobList(); |
|
|
|
|
|
|
|
|
|
@ -119,7 +141,7 @@ try { |
|
|
|
|
$endTime = time() + 14 * 60; |
|
|
|
|
|
|
|
|
|
$executedJobs = []; |
|
|
|
|
while ($job = $jobList->getNext()) { |
|
|
|
|
while ($job = $jobList->getNext($onlyTimeSensitive)) { |
|
|
|
|
if (isset($executedJobs[$job->getId()])) { |
|
|
|
|
$jobList->unlockJob($job); |
|
|
|
|
break; |
|
|
|
|
|