www.gusucode.com > KPPW众包威客PHP开源建站系统 v3.0源码程序 > KPPW/vendor/laravel/framework/src/Illuminate/Queue/Console/ListFailedCommand.php
<?php namespace Illuminate\Queue\Console; use Illuminate\Support\Arr; use Illuminate\Console\Command; class ListFailedCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'queue:failed'; /** * The console command description. * * @var string */ protected $description = 'List all of the failed queue jobs'; /** * The table headers for the command. * * @var array */ protected $headers = ['ID', 'Connection', 'Queue', 'Class', 'Failed At']; /** * Execute the console command. * * @return void */ public function fire() { $jobs = $this->getFailedJobs(); if (count($jobs) == 0) { return $this->info('No failed jobs!'); } $this->displayFailedJobs($jobs); } /** * Compile the failed jobs into a displayable format. * * @return array */ protected function getFailedJobs() { $results = []; foreach ($this->laravel['queue.failer']->all() as $failed) { $results[] = $this->parseFailedJob((array) $failed); } return array_filter($results); } /** * Parse the failed job row. * * @param array $failed * @return array */ protected function parseFailedJob(array $failed) { $row = array_values(Arr::except($failed, ['payload'])); array_splice($row, 3, 0, $this->extractJobName($failed['payload'])); return $row; } /** * Extract the failed job name from payload. * * @param string $payload * @return string|null */ private function extractJobName($payload) { $payload = json_decode($payload, true); if ($payload && (! isset($payload['data']['command']))) { return Arr::get($payload, 'job'); } if ($payload && isset($payload['data']['command'])) { preg_match('/"([^"]+)"/', $payload['data']['command'], $matches); if (isset($matches[1])) { return $matches[1]; } else { return Arr::get($payload, 'job'); } } } /** * Display the failed jobs in the console. * * @param array $jobs * @return void */ protected function displayFailedJobs(array $jobs) { $this->table($this->headers, $jobs); } }