Laravel如何从工作中获取数据?

Laravel如何从工作中获取数据?,laravel,queue,jobs,Laravel,Queue,Jobs,我得到了拉威尔队列(与Redis)。我需要从这个队列中得到这份工作。我正在努力做到: $queues=Queue::getRedis()->zrange('queues:converge:delayed',0,-1); foreach($job队列){ $tmpdata=json_decode($job); $command=$tmpdata->data->command; } 但是在$command中,我得到了以下字符串: “O:16:\'App\Jobs\TestJob\':8:{s:7:

我得到了拉威尔队列(与Redis)。我需要从这个队列中得到这份工作。我正在努力做到:

$queues=Queue::getRedis()->zrange('queues:converge:delayed',0,-1);
foreach($job队列){
$tmpdata=json_decode($job);
$command=$tmpdata->data->command;
}
但是在
$command
中,我得到了以下字符串:

“O:16:\'App\Jobs\TestJob\':8:{s:7:\\\\\\\u0000*\u000name\'s:5:\'12345\'s:6:\\u0000*\u0000job\'N;s:10:'connection\'N;s:5:'queue\'s\'s:10:'concurrence\'s:15:'chainConnection\'N;s:10:'queue chainConnection\'N;N;s:5:'delay\'i:5;s:7:'chained\'a:0:}”


您看到的数据已序列化。您可以将其取消序列化,如下所示:

 $command = unserialize($tmpdata->data->command);

尽管要小心,但请阅读此命令的文档,因为它存在潜在的安全风险:

我似乎在这里遇到了相同的问题:

$command=unserialize($tmpdata->data->command);将不起作用,因为我使用的序列化字符串“\u0000”中有空值:

在此字符串修复之后,我使用:

$unserialized = unserialize($str, ['allowed_classes' => false]);
但这似乎是一个糟糕的解决方案。一定是拉雷维尔有更好的东西可以提供

$str = str_replace('\u0000', ' ', $payload['data']['command']);
$unserialized = unserialize($str, ['allowed_classes' => false]);