DatabaseJob.php
TLDR
This file contains the DatabaseJob
class, which extends the Job
class and implements the JobContract
interface. It provides methods for interacting with a database queue, such as releasing a job back into the queue, deleting a job from the queue, getting the number of attempts for a job, and getting the raw body of a job.
Methods
release
This method releases the job back into the queue after a specified delay.
delete
This method deletes the job from the queue.
attempts
This method returns the number of times the job has been attempted.
getJobId
This method returns the job identifier.
getRawBody
This method returns the raw body string for the job.
getJobRecord
This method returns the database job record.
<?php
namespace Illuminate\Queue\Jobs;
use Illuminate\Container\Container;
use Illuminate\Contracts\Queue\Job as JobContract;
use Illuminate\Queue\DatabaseQueue;
class DatabaseJob extends Job implements JobContract
{
/**
* The database queue instance.
*
* @var \Illuminate\Queue\DatabaseQueue
*/
protected $database;
/**
* The database job payload.
*
* @var \stdClass
*/
protected $job;
/**
* Create a new job instance.
*
* @param \Illuminate\Container\Container $container
* @param \Illuminate\Queue\DatabaseQueue $database
* @param \stdClass $job
* @param string $connectionName
* @param string $queue
* @return void
*/
public function __construct(Container $container, DatabaseQueue $database, $job, $connectionName, $queue)
{
$this->job = $job;
$this->queue = $queue;
$this->database = $database;
$this->container = $container;
$this->connectionName = $connectionName;
}
/**
* Release the job back into the queue after (n) seconds.
*
* @param int $delay
* @return void
*/
public function release($delay = 0)
{
parent::release($delay);
$this->database->deleteAndRelease($this->queue, $this, $delay);
}
/**
* Delete the job from the queue.
*
* @return void
*/
public function delete()
{
parent::delete();
$this->database->deleteReserved($this->queue, $this->job->id);
}
/**
* Get the number of times the job has been attempted.
*
* @return int
*/
public function attempts()
{
return (int) $this->job->attempts;
}
/**
* Get the job identifier.
*
* @return string
*/
public function getJobId()
{
return $this->job->id;
}
/**
* Get the raw body string for the job.
*
* @return string
*/
public function getRawBody()
{
return $this->job->payload;
}
/**
* Get the database job record.
*
* @return \Illuminate\Queue\Jobs\DatabaseJobRecord
*/
public function getJobRecord()
{
return $this->job;
}
}