time = $time; } /** * The function to prepare the execution of the job. * * @return void * * @since 15.0.0 * @deprecated since 25.0.0 Use start() instead. This method will be removed * with the ILogger interface */ public function execute(IJobList $jobList, ?ILogger $logger = null) { $this->start($jobList); } /** * @inheritdoc * @since 25.0.0 */ public function start(IJobList $jobList): void { $jobList->setLastRun($this); $logger = \OCP\Server::get(LoggerInterface::class); try { $jobDetails = get_class($this) . ' (id: ' . $this->getId() . ', arguments: ' . json_encode($this->getArgument()) . ')'; $jobStartTime = $this->time->getTime(); $logger->debug('Starting job ' . $jobDetails, ['app' => 'cron']); $this->run($this->argument); $timeTaken = $this->time->getTime() - $jobStartTime; $logger->debug('Finished job ' . $jobDetails . ' in ' . $timeTaken . ' seconds', ['app' => 'cron']); $jobList->setExecutionTime($this, $timeTaken); } catch (\Throwable $e) { if ($logger) { $logger->error('Error while running background job ' . $jobDetails, [ 'app' => 'core', 'exception' => $e, ]); } } } /** * @since 15.0.0 */ final public function setId(int $id) { $this->id = $id; } /** * @since 15.0.0 */ final public function setLastRun(int $lastRun) { $this->lastRun = $lastRun; } /** * @since 15.0.0 */ public function setArgument($argument) { $this->argument = $argument; } /** * @since 15.0.0 */ final public function getId(): int { return $this->id; } /** * @since 15.0.0 */ final public function getLastRun(): int { return $this->lastRun; } /** * @since 15.0.0 */ public function getArgument() { return $this->argument; } /** * Set this to false to prevent two Jobs from this class from running in parallel * * @param bool $allow * @return void * @since 27.0.0 */ public function setAllowParallelRuns(bool $allow): void { $this->allowParallelRuns = $allow; } /** * @return bool * @since 27.0.0 */ public function getAllowParallelRuns(): bool { return $this->allowParallelRuns; } /** * The actual function that is called to run the job * * @param $argument * @return void * * @since 15.0.0 */ abstract protected function run($argument); }