0

为了发送邮件等,我们在项目中使用消息。如果消息失败(由于消息处理程序代码中的错误),它将存储在messenger_messages表中。

messenger_messages表包含一个名为 的列body。这是body专栏的一部分(它包含更多,但它真的很大)。该主体由 Symfony/PHP(或 RabbitMQ 包,不确定究竟是哪个)编码。

O:36:\"Symfony\\Component\\Messenger\\Envelope\":2:{s:44:\"\0Symfony\\Component\\Messenger\\Envelope\0stamps\";a:4:{s:46:\"Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\";a:1:{i:0;O:46:\"Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\":1:{s:55:\"\0Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\0busName\";s:21:\"messenger.bus.default\";}}s:44:\"Symfony\\Component\\Messenger\\Stamp\\DelayStamp\";a:4:{i:0;O:44:\"Symfony\\Component\\Messenger\\Stamp\\DelayStamp\":1:{s:51:\"\0Symfony\\Component\\Messenger\\Stamp\\DelayStamp\0delay\";i:5000;}i:1;O:44:\"Symfony\\Component\\Messenger\\Stamp\\DelayStamp\":1:{s:51:\"\0Symfony\\Component\\Messenger\\Stamp\\DelayStamp\0delay\";i:10000;}i:2;O:44:\"Symfony\\Component\\Messenger\\Stamp\\DelayStamp\":1:{s:51:\"\0Symfony\\Component\\Messenger\\Stamp\\DelayStamp\0delay\";i:20000;}i:3;O:44:\"Symfony\\Component\\Messenger\\Stamp\\DelayStamp\":1:{s:51:\"\0Symfony\\Component\\Messenger\\Stamp\\DelayStamp\0delay\";i:0;}}s:49:\"Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\";a:4:{i:0;O:49:\"Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\":4:{s:61:\"\0Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\0retryCount\";i:1;s:64:\"\0Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\0redeliveredAt\";O:17:\"DateTimeImmutable\":3:{s:4:\"date\";s:26:\"2021-09-16 11:20:58.645398\";s:13:\"timezone_type\";i:3;s:8:\"timezone\";s:16:\"Europe/Amsterdam\";}s:67:\"\0Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\0exceptionMessage\";N;s:67:\"\0Symfony\\Component\\Messenger\\Stamp\\RedeliveryStamp\0flattenException\";N;}

我怎样才能解码/反序列化这个身体?我尝试使用unserialize:(请记住,这只是为了测试,这不是最终代码0

dump(unserialize($conn->executeQuery('SELECT * FROM messenger_messages')->fetchAllAssociative()[0]['body']));

但这不起作用并给出此错误,例如:

Notice: unserialize(): Error at offset 0 of 27377 bytes
4

0 回答 0