aboutsummaryrefslogtreecommitdiffstats
path: root/cron.php
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-15 15:47:11 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2024-09-15 16:04:43 +0200
commit9538c0ce7e30460333ffe008657167d063dcc684 (patch)
treef62d974b74f798eb541120555fa6bdbd5e8124a8 /cron.php
parent6d6baec54f3ebaf3d3917a58aa5281a7a21e738b (diff)
downloadnextcloud-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.php30
1 files changed, 24 insertions, 6 deletions
diff --git a/cron.php b/cron.php
index ed3e72b3d88..5ff93fdf1d8 100644
--- a/cron.php
+++ b/cron.php
@@ -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);