public function end()
 {
     if ($this->qid) {
         $queueJob = QueueJob::get($this->qid);
         $queueJob = $queueJob->finish();
         Redis::LSET(config('queue-managers.name'), $queueJob->qid, $queueJob->toJson());
     }
 }
 /**
  * Bootstrap the application services.
  *
  * @return void
  */
 public function boot()
 {
     if (config('queue.default') != 'sync') {
         Queue::after(function (JobProcessed $event) {
             $job = '';
             if (isset($event->data['data']['command'])) {
                 $job = unserialize($event->data['data']['command']);
             } else {
                 if (isset($event->data['data']['data'])) {
                     $job = unserialize($event->data['data']['data']);
                 }
             }
             if (!empty($job)) {
                 $id = sha1(serialize($job));
             } else {
                 if (isset($event->data['data'])) {
                     $id = md5(json_encode($event->data['data']));
                 }
             }
             $queueJob = $this->client()->get($id);
             if ($queueJob) {
                 $queueJob = $queueJob->finish();
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             }
         });
         Queue::before(function (JobProcessing $event) {
             $job = '';
             if (isset($event->data['data']['command'])) {
                 $job = unserialize($event->data['data']['command']);
             } else {
                 if (isset($event->data['data']['data'])) {
                     $job = unserialize($event->data['data']['data']);
                 }
             }
             if (!empty($job)) {
                 $id = sha1(serialize($job));
             } else {
                 if (isset($event->data['data'])) {
                     $id = md5(json_encode($event->data['data']));
                 }
             }
             $queueJob = $this->client()->get($id);
             if ($queueJob) {
                 $queueJob = $queueJob->initialization($event->job, $event->data);
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             } else {
                 $queueJob = QueueJob::make($id, $event->data);
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             }
         });
         Queue::failing(function ($event) {
             // $event->connectionName
             // $event->data
             // $event->data
         });
     }
 }
 static function pagination($order, $num)
 {
     $colltions = [];
     $length = Redis::HLEN(config('queue-managers.name'));
     if ($length > 0) {
         $arrray = Redis::HVALS(config('queue-managers.name'));
         if (count($arrray > 0)) {
             $jobs = [];
             if (!empty($order)) {
                 $arrray = self::sort($arrray, $order);
                 foreach ($arrray as $value) {
                     if (!empty($value)) {
                         $jobs[] = QueueJob::toBase($value);
                     } else {
                         return [];
                     }
                 }
             } else {
                 foreach ($arrray as $value) {
                     if (!empty($value)) {
                         $jobArray = json_decode($value);
                         $jobs[] = QueueJob::toBase($jobArray);
                     } else {
                         return [];
                     }
                 }
             }
             $colltion = collect($jobs);
             $colltions = $colltion->forPage(request('page') ? request('page') : 1, 10);
         }
     }
     return new LengthAwarePaginator($colltions, $length, $num, request('page') ? request('page') : 1, ['path' => Paginator::resolveCurrentPath(), 'pageName' => 'page']);
 }