first commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/task/ProcessQueueJobs.php
|
||||
*
|
||||
* Copyright (c) 2022 Simon Fraser University
|
||||
* Copyright (c) 2022 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class ProcessQueueJobs
|
||||
*
|
||||
* @ingroup tasks
|
||||
*
|
||||
* @brief Class to process queue jobs via the schedular task
|
||||
*/
|
||||
|
||||
namespace PKP\task;
|
||||
|
||||
use APP\core\Application;
|
||||
use PKP\config\Config;
|
||||
use PKP\queue\JobRunner;
|
||||
use PKP\scheduledTask\ScheduledTask;
|
||||
|
||||
class ProcessQueueJobs extends ScheduledTask
|
||||
{
|
||||
/**
|
||||
* @copydoc ScheduledTask::getName()
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return __('admin.scheduledTask.processQueueJobs');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @copydoc ScheduledTask::executeActions()
|
||||
*/
|
||||
public function executeActions()
|
||||
{
|
||||
if (Application::isUnderMaintenance() || !Config::getVar('queues', 'job_runner', true)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$jobQueue = app('pkpJobQueue');
|
||||
|
||||
$jobBuilder = $jobQueue->getJobModelBuilder();
|
||||
|
||||
if ($jobBuilder->count() <= 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Executes all pending jobs when running the runScheduledTasks.php on the CLI
|
||||
if (runOnCLI('runScheduledTasks.php')) {
|
||||
while ($jobBuilder->count()) {
|
||||
$jobQueue->runJobInQueue();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Executes a limited number of jobs when processing a request
|
||||
(new JobRunner($jobQueue))
|
||||
->withMaxExecutionTimeConstrain()
|
||||
->withMaxJobsConstrain()
|
||||
->withMaxMemoryConstrain()
|
||||
->withEstimatedTimeToProcessNextJobConstrain()
|
||||
->processJobs($jobBuilder);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user