我如何很好地解码Laravel失败的工作JSON

问题描述 投票:5回答:3

我应该如何解码和“美化”Laravel失败的工作有效载荷?

在我的数据库表中failed_jobs我有列有效负载,如下所示:

{"job":"Illuminate\\Queue\\CallQueuedHandler@call","data":{"commandName":"App\\Jobs\\createHostingOncPanel","command":"O:30:\"App\\Jobs\\createHostingOncPanel\":7:{s:10:\"\u0000*\u0000orderNo\";i:11;s:18:\"\u0000*\u0000hostingPackages\";s:45:\"[{\"domainName\":\"qwddqwd.io\",\"hostingType\":1}]\";s:7:\"\u0000*\u0000user\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":2:{s:5:\"class\";s:8:\"App\\User\";s:2:\"id\";i:1;}s:10:\"connection\";N;s:5:\"queue\";N;s:5:\"delay\";N;s:6:\"\u0000*\u0000job\";N;}"}}

想把字符串json解码成可读的东西。

这是什么样的格式? :)

PS:这是一个Laravel 5.2版本

php laravel queue laravel-5.2
3个回答
9
投票

从failed_jobs表中读取

json_decode来自failed_jobs表的有效负载

$jsonpayload = json_decode($payload);

反序列化有效负载命令

$data = unserialize($jsonpayload->data->command);
print_r($data);//This is the data passed to queue

1
投票

我建议处理事件,然后以自己的方式存储您需要的任何数据。您可以使用失败的作业事件来捕获所有失败的作业:https://laravel.com/docs/master/queues#failed-job-events

或者您可以在作业本身使用failed()函数:https://laravel.com/docs/master/queues#dealing-with-failed-jobs

否则,Marc的评论似乎对我有意义。


1
投票

试试这个

$j = App\Models\Jobs::select('payload')->get();
$aw = json_decode($j[0]->payload)->data->command;
$cm = unserialize($aw);
dd($cm->payload);
© www.soinside.com 2019 - 2024. All rights reserved.