diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-15 15:47:11 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-15 16:04:43 +0200 |
commit | 9538c0ce7e30460333ffe008657167d063dcc684 (patch) | |
tree | f62d974b74f798eb541120555fa6bdbd5e8124a8 /cron.php | |
parent | 6d6baec54f3ebaf3d3917a58aa5281a7a21e738b (diff) | |
download | nextcloud-server-9538c0ce7e30460333ffe008657167d063dcc684.tar.gz nextcloud-server-9538c0ce7e30460333ffe008657167d063dcc684.zip |
feat: add verbose mode to cron.phpfeat/verbose-cron
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'cron.php')
-rw-r--r-- | cron.php | 30 |
1 files changed, 24 insertions, 6 deletions
@@ -28,13 +28,14 @@ try { 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); } @@ -57,9 +58,10 @@ Options: // 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(); @@ -142,7 +144,7 @@ Options: $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)) { @@ -157,6 +159,10 @@ Options: $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); @@ -183,16 +189,28 @@ Options: } 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); |