Skip to content

Commit 8680082

Browse files
Merge pull request #48018 from nextcloud/feat/verbose-cron
feat: add verbose mode to cron.php
2 parents 0a7b4b5 + 9538c0c commit 8680082

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

cron.php

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@
2828
Run the background job routine
2929
3030
Usage:
31-
php -f cron.php -- [-h] [<job-classes>...]
31+
php -f cron.php -- [-h] [--verbose] [<job-classes>...]
3232
3333
Arguments:
3434
job-classes Optional job class list to only run those jobs
3535
3636
Options:
37-
-h, --help Display this help message' . PHP_EOL;
37+
-h, --help Display this help message
38+
-v, --verbose Output more information' . PHP_EOL;
3839
exit(0);
3940
}
4041

@@ -57,9 +58,10 @@
5758

5859
// load all apps to get all api routes properly setup
5960
Server::get(IAppManager::class)->loadApps();
60-
6161
Server::get(ISession::class)->close();
6262

63+
$verbose = isset($argv[1]) && ($argv[1] === '-v' || $argv[1] === '--verbose');
64+
6365
// initialize a dummy memory session
6466
$session = new \OC\Session\Memory();
6567
$cryptoWrapper = \OC::$server->getSessionCryptoWrapper();
@@ -142,7 +144,7 @@
142144

143145
$executedJobs = [];
144146
// a specific job class list can optionally be given as argument
145-
$jobClasses = array_slice($argv, 1);
147+
$jobClasses = array_slice($argv, $verbose ? 2 : 1);
146148
$jobClasses = empty($jobClasses) ? null : $jobClasses;
147149

148150
while ($job = $jobList->getNext($onlyTimeSensitive, $jobClasses)) {
@@ -157,6 +159,10 @@
157159
$timeBefore = time();
158160
$memoryBefore = memory_get_usage();
159161
$memoryPeakBefore = memory_get_peak_usage();
162+
163+
if ($verbose) {
164+
echo 'Starting job ' . $jobDetails . PHP_EOL;
165+
}
160166

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

185191
if ($memoryAfter - $memoryBefore > 50_000_000) {
186-
$logger->warning('Used memory grew by more than 50 MB when executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryAfter). ' (before: ' . Util::humanFileSize($memoryBefore) . ')', ['app' => 'cron']);
192+
$message = 'Used memory grew by more than 50 MB when executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryAfter). ' (before: ' . Util::humanFileSize($memoryBefore) . ')';
193+
$logger->warning($message, ['app' => 'cron']);
194+
if ($verbose) {
195+
echo $message . PHP_EOL;
196+
}
187197
}
188198
if ($memoryPeakAfter > 300_000_000 && $memoryPeakBefore <= 300_000_000) {
189-
$logger->warning('Cron job used more than 300 MB of ram after executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryPeakAfter) . ' (before: ' . Util::humanFileSize($memoryPeakBefore) . ')', ['app' => 'cron']);
199+
$message = 'Cron job used more than 300 MB of ram after executing job ' . $jobDetails . ': ' . Util::humanFileSize($memoryPeakAfter) . ' (before: ' . Util::humanFileSize($memoryPeakBefore) . ')';
200+
$logger->warning($message, ['app' => 'cron']);
201+
if ($verbose) {
202+
echo $message . PHP_EOL;
203+
}
190204
}
191205

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

210+
if ($verbose) {
211+
echo 'Job ' . $jobDetails . ' done in ' . ($timeAfter - $timeBefore) . ' seconds' . PHP_EOL;
212+
}
213+
196214
$jobList->setLastJob($job);
197215
$executedJobs[$job->getId()] = true;
198216
unset($job);

0 commit comments

Comments
 (0)