89 lines
1.9 KiB
PHP
89 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* @file jobs/BaseJob.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class BaseJob
|
|
*
|
|
* @ingroup support
|
|
*
|
|
* @brief Abstract class for Jobs
|
|
*/
|
|
|
|
namespace PKP\jobs;
|
|
|
|
use APP\core\Application;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use PKP\config\Config;
|
|
|
|
abstract class BaseJob implements ShouldQueue
|
|
{
|
|
use Dispatchable;
|
|
use InteractsWithQueue;
|
|
use Queueable;
|
|
use SerializesModels;
|
|
|
|
/**
|
|
* The number of times the job may be attempted.
|
|
*
|
|
* @var int
|
|
*/
|
|
public $tries = 3;
|
|
|
|
/**
|
|
* The number of SECONDS to wait before retrying the job.
|
|
*/
|
|
public int $backoff = 5;
|
|
|
|
/**
|
|
* The maximum number of SECONDS a job should get processed before consider failed
|
|
*/
|
|
public int $timeout = 60;
|
|
|
|
/**
|
|
* The maximum number of unhandled exceptions to allow before failing.
|
|
*/
|
|
public int $maxExceptions = 3;
|
|
|
|
/**
|
|
* Indicate if the job should be marked as failed on timeout.
|
|
*/
|
|
public bool $failOnTimeout = true;
|
|
|
|
/**
|
|
* Initialize the job
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->connection = $this->defaultConnection();
|
|
$this->queue = Config::getVar('queues', 'default_queue', 'queue');
|
|
}
|
|
|
|
/**
|
|
* Get the queue job default connection to execute
|
|
*/
|
|
protected function defaultConnection(): string
|
|
{
|
|
if (Application::isUnderMaintenance()) {
|
|
return 'sync';
|
|
}
|
|
|
|
return Config::getVar('queues', 'default_connection', 'database');
|
|
}
|
|
|
|
/**
|
|
* handle the queue job execution process
|
|
*/
|
|
abstract public function handle();
|
|
}
|