Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 24 additions & 6 deletions cron.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@
Run the background job routine

Usage:
php -f cron.php -- [-h] [<job-classes>...]
php -f cron.php -- [-h] [--verbose] [<job-classes>...]

Arguments:
job-classes Optional job class list to only run those jobs

Options:
-h, --help Display this help message' . PHP_EOL;
-h, --help Display this help message
-v, --verbose Output more information' . PHP_EOL;
exit(0);
}

Expand All @@ -57,9 +58,10 @@

// load all apps to get all api routes properly setup
Server::get(IAppManager::class)->loadApps();

Server::get(ISession::class)->close();

$verbose = isset($argv[1]) && ($argv[1] === '-v' || $argv[1] === '--verbose');

// initialize a dummy memory session
$session = new \OC\Session\Memory();
$cryptoWrapper = \OC::$server->getSessionCryptoWrapper();
Expand Down Expand Up @@ -142,7 +144,7 @@

$executedJobs = [];
// a specific job class list can optionally be given as argument
$jobClasses = array_slice($argv, 1);
$jobClasses = array_slice($argv, $verbose ? 2 : 1);
$jobClasses = empty($jobClasses) ? null : $jobClasses;

while ($job = $jobList->getNext($onlyTimeSensitive, $jobClasses)) {
Expand All @@ -157,6 +159,10 @@
$timeBefore = time();
$memoryBefore = memory_get_usage();
$memoryPeakBefore = memory_get_peak_usage();

if ($verbose) {
echo 'Starting job ' . $jobDetails . PHP_EOL;
}

/** @psalm-suppress DeprecatedMethod Calling execute until it is removed, then will switch to start */
$job->execute($jobList);
Expand All @@ -183,16 +189,28 @@
}

if ($memoryAfter - $memoryBefore > 50_000_000) {
$logger->warning('Used memory grew by more than 50 MB when executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryAfter). ' (before: ' . Util::humanFileSize($memoryBefore) . ')', ['app' => 'cron']);
$message = 'Used memory grew by more than 50 MB when executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryAfter). ' (before: ' . Util::humanFileSize($memoryBefore) . ')';
$logger->warning($message, ['app' => 'cron']);
if ($verbose) {
echo $message . PHP_EOL;
}
}
if ($memoryPeakAfter > 300_000_000 && $memoryPeakBefore <= 300_000_000) {
$logger->warning('Cron job used more than 300 MB of ram after executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryPeakAfter) . ' (before: ' . Util::humanFileSize($memoryPeakBefore) . ')', ['app' => 'cron']);
$message = 'Cron job used more than 300 MB of ram after executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryPeakAfter) . ' (before: ' . Util::humanFileSize($memoryPeakBefore) . ')';
$logger->warning($message, ['app' => 'cron']);
if ($verbose) {
echo $message . PHP_EOL;
}
}

// clean up after unclean jobs
Server::get(\OC\Files\SetupManager::class)->tearDown();
$tempManager->clean();

if ($verbose) {
echo 'Job ' . $jobDetails . ' done in ' . ($timeAfter - $timeBefore) . ' seconds' . PHP_EOL;
}

$jobList->setLastJob($job);
$executedJobs[$job->getId()] = true;
unset($job);
Expand Down