Так,
a Я впервые пытаюсь использовать класс Commands, я хочу сделать сообщения очереди более читабельными, чем [2018-09-01 17:57:47][276] Processing: Illuminate\Foundation\Console\QueuedCommand
Итак, я сделал следующее;
Я зарегистрировал команду ConvertRecording
с protected $signature = 'recording:convert {recording_id}';
и protected $description = 'Convert a recording from mkv to mp4 using an recording id and making use of ffmpeg';
. У нее пустой конструктор, поскольку мне не нужно передавать ему объект ... А метод handle просто имеет рабочий код и несколько команд $this->log()
...
Теперь, когда я вызываю команду artisan, я использую следующий код:
$exitCode = Artisan::queue('recording:convert', [
'recording_id' => $recording_id
]);
И он добавляется в очередь, но я получаю только такие сообщения:
[2018-09-01 17:57:47][276] Processing: Illuminate\Foundation\Console\QueuedCommand
[2018-09-01 17:58:16][276] Processed: Illuminate\Foundation\Console\QueuedCommand
Как я мог его поменять на что-то вроде [2018-09-01 17:58:16] Procesing: Video with ID [video ID here]
Возможно, вы хотите сделать что-то с помещенными в очередь командами, для чего они на самом деле не предназначены. То, что вы видите в своих журналах, - это именно то, что должно делать задание - то есть сообщать, когда оно начинается и когда оно завершено (или не удалось). Это команда, в которой выполняется полезная работа, и поэтому весь ваш вывод и ведение журнала должны выполняться там.
Команды, естественно, имеют некоторые инструменты ведения журнала консоли, такие как ошибка, информация и комментарий, которые могут помочь вам в отладке:
$this->error('This is an error and will appear highlighted in the console');
$this->info('This is information');
$this->comment('This is a comment');
Однако их использование в производственной среде может не сработать, поскольку ваши работники очереди не будут консолью для входа в систему (я могу ошибаться, поскольку я никогда не пытался искать).
Я рекомендую просто создать специальный файл журнала для ваших команд с помощью ServiceProvider.
Я думаю, что это может быть невозможно, поскольку ваши очереди обычно работают под управлением процесса, который может не иметь консоли для входа. Но я недостаточно знаком с работой ОС, чтобы заявить об этом прямо. Если вам нужен вывод в реальном времени, то, возможно, здесь вам поможет функция Broadcast Laravel.
Было бы здорово, если бы в очереди отображались определенные сообщения, так как я хотел бы дать (в процессе производства) обратную связь через эту консоль ... но мне придется углубиться в это, я думаю