72 lines
1.7 KiB
PHP
72 lines
1.7 KiB
PHP
<?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;
|
|
}
|
|
}
|