<?php /** * ========================= * DelayedJobs Plugin Config * ========================= * */ use Cake\Core\Configure; $defaultConfig = ['maximum' => ['maxRetries' => 5, 'pulseTime' => 6 * 60 * 60, 'priority' => 100], 'default' => ['maxRetries' => 5], 'archive' => ['enabled' => false, 'tableName' => 'delayed_jobs_archive', 'recurring' => 'tomorrow 00:30']]; $delayedJobsConfig = Configure::read('DelayedJobs'); Configure::write('DelayedJobs', \Cake\Utility\Hash::merge($defaultConfig, $delayedJobsConfig)); \Cake\Database\Type::map('serialize', 'DelayedJobs\\Database\\Type\\SerializeType'); \DelayedJobs\RecurringJobBuilder::add(['worker' => 'DelayedJobs.Archive', 'priority' => Configure::read('maximum.priority')]);
public function recurring() { $this->out('Firing recurring event.'); //Event is deprecated $event = new Event('DelayedJobs.recurring', $this); $event->result = RecurringJobBuilder::retrieve(); EventManager::instance()->dispatch($event); $this->out(__('{0} jobs to queue', count($event->result)), 1, Shell::VERBOSE); foreach ($event->result as $job) { if (!$job instanceof Job) { $job = new Job($job + ['group' => 'Recurring', 'priority' => 100, 'maxRetries' => 5, 'runAt' => new Time('+30 seconds')]); } if (JobManager::instance()->isSimilarJob($job)) { $this->out(__(' <error>Already queued:</error> {0}', $job->getWorker()), 1, Shell::VERBOSE); continue; } $this->enqueue($job); $this->out(__(' <success>Queued:</success> {0}', $job->getWorker()), 1, Shell::VERBOSE); } }