Iorder to send mails etc, we use messages in our project. If a message fails (cause of an error in the code of the message handler) it'll be stored in messenger_messages
table.
The messenger_messages
table contains a column called body
. This is a part of the body
column (it contains much more but it's really big). This body is encoded by Symfony/PHP (or RabbitMQ bundle, not sure which exactly).
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;}
How can I decode/deserialize this body? I tried using unserialize
: (keep in mind this is just to test, this won't be the final code0
dump(unserialize($conn->executeQuery('SELECT * FROM messenger_messages')->fetchAllAssociative()[0]['body']));
but that doesn't work and gives this error for example:
Notice: unserialize(): Error at offset 0 of 27377 bytes