Source of file BeanstalkdJob.php
Size: 2,823 Bytes - Last Modified: 2021-12-23T10:38:27+00:00
/var/www/docs.ssmods.com/process/src/src/Jobs/BeanstalkdJob.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | <?php namespace StudioBonito\SilverStripe\Queue\Jobs; use Injector; use Pheanstalk_Job; use Pheanstalk_Pheanstalk as Pheanstalk; class BeanstalkdJob extends AbstractJob implements JobInterface { /** * The Pheanstalk instance. * * @var Pheanstalk */ protected $pheanstalk; /** * The Pheanstalk job instance. * * @var Pheanstalk_Job */ protected $job; /** * Create a new job instance. * * @param \Injector $injector * @param Pheanstalk $pheanstalk * @param Pheanstalk_Job $job * @param string $queue * * @return void */ public function __construct(Injector $injector, Pheanstalk $pheanstalk, Pheanstalk_Job $job, $queue) { $this->job = $job; $this->queue = $queue; $this->injector = $injector; $this->pheanstalk = $pheanstalk; } /** * Run the job. * * @return void */ public function run() { $this->resolveAndRun(\Convert::json2array($this->getRawPayload())); } /** * Get the raw payload string for the job. * * @return string */ public function getRawPayload() { return $this->job->getData(); } /** * Delete the job from the queue. * * @return void */ public function delete() { parent::delete(); $this->pheanstalk->delete($this->job); } /** * Release the job back into the queue. * * @param int $delay * * @return void */ public function release($delay = 0) { $priority = Pheanstalk::DEFAULT_PRIORITY; $this->pheanstalk->release($this->job, $priority, $delay); } /** * Bury the job in the queue. * * @return void */ public function bury() { $this->pheanstalk->bury($this->job); } /** * Get the number of times the job has been attempted. * * @return int */ public function attempts() { $stats = $this->pheanstalk->statsJob($this->job); return (int)$stats->reserves; } /** * Get the job identifier. * * @return string */ public function getJobId() { return $this->job->getId(); } /** * Get the injector instance. * * @return \Injector */ public function getInjector() { return $this->injector; } /** * Get the underlying Pheanstalk instance. * * @return Pheanstalk */ public function getPheanstalk() { return $this->pheanstalk; } /** * Get the underlying Pheanstalk job. * * @return Pheanstalk_Job */ public function getPheanstalkJob() { return $this->job; } } |