Как фиксировать детали очереди заданий после завершения в Laravel 5.1?

В Laravel 5.1 я хотел бы получить уведомление о завершении задания с подробной информацией о задании (в частности, user_id и customer_id ). Я использую метод Queue::after method в AppServiceProvider как предлагает Laravel.

Если дамп параметра $data выглядит так:

 Queue::after(function ($connection, $job, $data) { var_dump($data); exit; }); 

Я получаю следующее:

 array(2) { ["job"]=> string(39) "Illuminate\Queue\CallQueuedHandler@call" ["data"]=> array(1) { ["command"]=> string(263) "O:23:"App\Jobs\ExportContacts":4:{s:7:"*data";a:5:{s:7:"user_id";s:1:"2";s:10:"customer_id";s:1:"1";s:6:"filter";N;s:5:"dates";a:2:{i:0;i:1445352975;i:1;i:1448034975;}s:4:"file";s:31:"/tend_10-20-2015-11-20-2015.csv";}s:5:"queue";N;s:5:"delay";N;s:6:"*job";N;}" } } 

Массив data содержит как user_id и customer_id которые мне user_id . Это здорово. Но как мне разобрать этот ответ, чтобы вытащить эту информацию.

Моя единственная мысль – использовать регулярное выражение. Но я думал, что проверю, есть ли лучший способ?

Данные сериализуются. Вам нужно только:
$command = unserialize($data['data']['command']);

Для Laravel 5.2:

 Queue::after(function (JobProcessed $event) { $command = unserialize($event->data['data']['command']); }); 

Я думаю, что вам не нужно получать данные из data . Я покажу вам простое использование очереди :: позже

 $yourData = $data_which_you_need; $date = Carbon::now()->addMinutes(10); Queue::later($date, function($job) use ($yourData){ // THIS CODE WILL BE EXECUTE AFTER 10 MINUTES $user_id = $yourData['user_id']; User::find($user_id)->destroy(); $job->delete(); }); 

Я надеюсь, что я помогу вам

Есть ли способ вытащить переменные, которые вы передали заданию в очередь: после? Вам нужно было использовать регулярное выражение? Даже после неэтериализации его массивной строки данных.

По-прежнему возникают проблемы с извлечением данных из задания, которое только что запущено в очередь :: after