123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <?php
-
- namespace Illuminate\Queue;
-
- use Exception;
- use Throwable;
- use Illuminate\Queue\Jobs\SyncJob;
- use Illuminate\Contracts\Queue\Job;
- use Illuminate\Contracts\Queue\Queue as QueueContract;
- use Symfony\Component\Debug\Exception\FatalThrowableError;
-
- class SyncQueue extends Queue implements QueueContract
- {
- /**
- * Get the size of the queue.
- *
- * @param string $queue
- * @return int
- */
- public function size($queue = null)
- {
- return 0;
- }
-
- /**
- * Push a new job onto the queue.
- *
- * @param string $job
- * @param mixed $data
- * @param string $queue
- * @return mixed
- *
- * @throws \Exception|\Throwable
- */
- public function push($job, $data = '', $queue = null)
- {
- $queueJob = $this->resolveJob($this->createPayload($job, $data), $queue);
-
- try {
- $this->raiseBeforeJobEvent($queueJob);
-
- $queueJob->fire();
-
- $this->raiseAfterJobEvent($queueJob);
- } catch (Exception $e) {
- $this->handleException($queueJob, $e);
- } catch (Throwable $e) {
- $this->handleException($queueJob, new FatalThrowableError($e));
- }
-
- return 0;
- }
-
- /**
- * Resolve a Sync job instance.
- *
- * @param string $payload
- * @param string $queue
- * @return \Illuminate\Queue\Jobs\SyncJob
- */
- protected function resolveJob($payload, $queue)
- {
- return new SyncJob($this->container, $payload, $this->connectionName, $queue);
- }
-
- /**
- * Raise the before queue job event.
- *
- * @param \Illuminate\Contracts\Queue\Job $job
- * @return void
- */
- protected function raiseBeforeJobEvent(Job $job)
- {
- if ($this->container->bound('events')) {
- $this->container['events']->dispatch(new Events\JobProcessing($this->connectionName, $job));
- }
- }
-
- /**
- * Raise the after queue job event.
- *
- * @param \Illuminate\Contracts\Queue\Job $job
- * @return void
- */
- protected function raiseAfterJobEvent(Job $job)
- {
- if ($this->container->bound('events')) {
- $this->container['events']->dispatch(new Events\JobProcessed($this->connectionName, $job));
- }
- }
-
- /**
- * Raise the exception occurred queue job event.
- *
- * @param \Illuminate\Contracts\Queue\Job $job
- * @param \Exception $e
- * @return void
- */
- protected function raiseExceptionOccurredJobEvent(Job $job, $e)
- {
- if ($this->container->bound('events')) {
- $this->container['events']->dispatch(new Events\JobExceptionOccurred($this->connectionName, $job, $e));
- }
- }
-
- /**
- * Handle an exception that occurred while processing a job.
- *
- * @param \Illuminate\Queue\Jobs\Job $queueJob
- * @param \Exception $e
- * @return void
- *
- * @throws \Exception
- */
- protected function handleException($queueJob, $e)
- {
- $this->raiseExceptionOccurredJobEvent($queueJob, $e);
-
- FailingJob::handle($this->connectionName, $queueJob, $e);
-
- throw $e;
- }
-
- /**
- * Push a raw payload onto the queue.
- *
- * @param string $payload
- * @param string $queue
- * @param array $options
- * @return mixed
- */
- public function pushRaw($payload, $queue = null, array $options = [])
- {
- //
- }
-
- /**
- * Push a new job onto the queue after a delay.
- *
- * @param \DateTimeInterface|\DateInterval|int $delay
- * @param string $job
- * @param mixed $data
- * @param string $queue
- * @return mixed
- */
- public function later($delay, $job, $data = '', $queue = null)
- {
- return $this->push($job, $data, $queue);
- }
-
- /**
- * Pop the next job off of the queue.
- *
- * @param string $queue
- * @return \Illuminate\Contracts\Queue\Job|null
- */
- public function pop($queue = null)
- {
- //
- }
- }
|