From 8da0da4349ba100a432ee509a51a7e4f9f0981f1 Mon Sep 17 00:00:00 2001 From: Touhidur Rahman Date: Fri, 12 Jul 2024 14:26:53 +0600 Subject: [PATCH] pkp/pkp-lib#9823 update the crontrol job processing via scheduler --- classes/core/PKPQueueProvider.php | 10 ++++------ classes/task/ProcessQueueJobs.php | 23 +++++++++++++++++------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/classes/core/PKPQueueProvider.php b/classes/core/PKPQueueProvider.php index f644c3c62b7..852f251d05c 100644 --- a/classes/core/PKPQueueProvider.php +++ b/classes/core/PKPQueueProvider.php @@ -1,7 +1,5 @@ app->get('queue.worker'); /** @var \Illuminate\Queue\Worker $worker */ $worker - ->setCache(app()->get('cache.store')) + ->setCache($this->app->get('cache.store')) ->daemon( $connection, $queue, @@ -98,9 +96,9 @@ public function runJobInQueue(): void return; } - $laravelContainer = PKPContainer::getInstance(); + $worker = $this->app->get('queue.worker'); /** @var \Illuminate\Queue\Worker $worker */ - $laravelContainer['queue.worker']->runNextJob( + $worker->runNextJob( 'database', $job->queue ?? Config::getVar('queues', 'default_queue', 'queue'), $this->getWorkerOptions() diff --git a/classes/task/ProcessQueueJobs.php b/classes/task/ProcessQueueJobs.php index f93086880b3..88d5fd8dd64 100644 --- a/classes/task/ProcessQueueJobs.php +++ b/classes/task/ProcessQueueJobs.php @@ -16,7 +16,6 @@ namespace PKP\task; -use APP\core\Application; use PKP\config\Config; use PKP\core\PKPContainer; use PKP\queue\JobRunner; @@ -38,11 +37,13 @@ public function getName(): string */ public function executeActions(): bool { - if (Application::isUnderMaintenance() || !Config::getVar('queues', 'job_runner', true)) { + // If processing of queue jobs via scheduler is disbaled + // will not process any queue jobs via schedule taks + if (!Config::getVar('queues', 'schedule_job_process', true)) { return true; } - $jobQueue = app('pkpJobQueue'); + $jobQueue = app('pkpJobQueue'); /** @var \PKP\core\PKPQueueProvider $jobQueue */ $jobBuilder = $jobQueue->getJobModelBuilder(); @@ -50,16 +51,26 @@ public function executeActions(): bool return true; } - // Executes all pending jobs when running the runScheduledTasks.php on the CLI + // When processing queue jobs vai schedule task in CLI mode + // will process a limited number of jobs at a single time if (PKPContainer::getInstance()->runningInConsole('runScheduledTasks.php')) { - while ($jobBuilder->count()) { + $maxJobCountToProcess = (int)Config::getVar('queues', 'job_runner_max_jobs', 30); + + while ($jobBuilder->count() && $maxJobCountToProcess) { $jobQueue->runJobInQueue(); + $maxJobCountToProcess = $maxJobCountToProcess - 1; } return true; } - // Executes a limited number of jobs when processing a request + // If the job runner is enabled, + // Scheduler will not process any queue jobs when running in web request mode + if (Config::getVar('queues', 'job_runner', false)) { + return true; + } + + // Executes a limited number of jobs when processing a via web request mode (new JobRunner($jobQueue)) ->withMaxExecutionTimeConstrain() ->withMaxJobsConstrain()