$option) { switch ($option) { case '-f': $monitoring->setStatus($cron_name . "_disabled", "yesno", 0); $monitoring->setStatus($cron_name . "_active", "yesno", 0); break; case '-t': // When `-t TIME_IN_SEC` is specified, we ignore the cron active flag // if the time elapsed `TIME_IN_SEC` seconds after the last job started. // Check the next argument is the value for -t option. if (!($index + 1 < count($argv)) || // check if '-t' is not the last argument. !(ctype_digit($argv[$index + 1]))) { // check the next argument is numeric string $log->logFatal('Option -t requires an integer.'); $monitoring->endCronjob($cron_name, 'E0085', 3, true, false); } $timeout = intval($argv[$index + 1]); $timeElapsedFromLastStart = $dStartTime - $monitoring->getLastCronStarted($cron_name); if ($timeElapsedFromLastStart > $timeout) { $log->logWarn("Previous cronjob `$cron_name` is started before than you specified by -t. Re-run forced."); $monitoring->setStatus($cron_name . "_active", "yesno", 0); } break; } } $log->LogDebug('Starting ' . $cron_name); // Load the start time for later runtime calculations for monitoring $cron_start[$cron_name] = microtime(true); // Skip all crons if admin enabled pool maintenance if ($setting->getValue('maintenance')) { $log->logInfo('Cronjobs disabled due to pool maintenance'); $monitoring->endCronjob($cron_name, 'E0083', 2, true, false); } // Check if our cron is activated if ($monitoring->isDisabled($cron_name)) { $log->logFatal('Cronjob is currently disabled due to errors, use -f option to force running cron.'); $monitoring->endCronjob($cron_name, 'E0018', 1, true, false); } // Mark cron as running for monitoring $log->logDebug('Marking cronjob as running for monitoring'); if (!$monitoring->startCronjob($cron_name)) { $log->logFatal('Unable to start cronjob: ' . $monitoring->getCronError()); exit; } // Check if we need to halt our crons due to an outstanding upgrade if ($setting->getValue('DB_VERSION') != DB_VERSION || $config['version'] != CONFIG_VERSION) { $log->logFatal('Cronjob is currently disabled due to required upgrades. Import any outstanding SQL files and check your configuration file.'); $monitoring->endCronjob($cron_name, 'E0075', 0, true, false); }