我正在使用我的第一个Laravel应用程序,在尝试使用Mail::queue
发送电子邮件时排队发送电子邮件时遇到了一个奇怪的问题。
我最初使用sync
驱动程序,一切正常,但现在切换到beanstalkd
驱动程序,它已停止发送我的电子邮件。
我的配置如下:
apt-get
"pda/pheanstalk": "2.1.*"
中composer.json
我所注意到的是每次我跑
$ php artisan queue:work
我得到了:
[ErrorException]
Insufficient data for unserializing - 2570 required, 168 present
queue:work [--queue[="..."]] [--delay[="..."]] [--force] [--memory[="..."]] [--sleep[="..."]] [--tries[="..."]] [connection]
我已经尝试选择redis
驱动程序并且没有给我错误,所以显然pheanstalk在我的机器上运行有什么问题。
我已尝试更改composer.json
中的pheanstalk版本,但无论我使用哪个版本,我仍然会遇到同样的问题。
问题是,这个问题似乎没有得到特别广泛的记录,而且错误信息实际上并没有给予足够的信息......
有任何建议吗?
答案 0 :(得分:1)
检查此回复:https://stackoverflow.com/a/28226746/1427439
您可能遇到同样的问题。
基本上,请确保您没有使用任何Eloquent模型与您传递给Mail::queue
答案 1 :(得分:0)
Laravel对推送到队列的所有内容进行序列化和加密。您的应用程序加密密钥(app/config/app.php 'key'
)是否设置为非空值?
您可以自己查询beanstalkd,看看哪些消息被推送到队列中?你应该看到这样难以理解的字符串:
eyJpdiI6IlZwT1p6QkhXQ3BcL0lRUmlHXC9maE8xT2o5Rk1BSUtMM0d5SlRoKzcrSGNLTT0iLCJ2YWx1ZSI6Im02N05LQzNPamNZSmVpTW5kXC80NnkyWEl0RUFMZHFiQXo0VnlNYUlLUUQzSzUrZHNIS2Vlb1kxWkpRS1VFZm5SVERXeHduWEFQelE5SCtZbVBwRmk2QkJPTlB5ek1RNWpKM3JRTzBDSlB3N3orYmk5UmZwM0ZzNmlpVVdQWVdQNWtKSWVQVG5nK29MajcyM3VtTUdraE5SNXJXYUJyYUErb25iTUJGSzhQYms9IiwibWFjIjoiNGFmNjMwNjYxYzk4NmMyZTA2ZTZlMzAwZTBlZjZhMTA1OGM2NzAxNTBkNWUzYTA2MTY3NzNiMTU4NTRlMmEyOSJ9
该错误意味着您要推送的字符串要么未加密,要么中途停止将作业推送到队列中途。如果没有别的,你可以搜索那个例外的文本("用于反序列化的数据不足")它应该产生一个vendor/pda/pheanstalk
的PHP文件,你可以试着去理解什么&#39继续。
答案 2 :(得分:0)
您无法将对象传递给视图数据,因为laravel无法将它们序列化正确,因此您只需将传递给视图的任何数据更改为简单的数据结构(如数组)。