5

我正在开发我的第一个 Laravel 应用程序,在尝试将电子邮件发送队列Mail::queue用于发送电子邮件时遇到了一个奇怪的问题。

我最初使用的是sync驱动程序,一切正常,但是现在切换到beanstalkd驱动程序后,它停止发送我的电子邮件。

我的配置如下:

  • Ubuntu 13.10
  • 拉拉维尔 4.1
  • PHP 5.5.3
  • 通过安装 Beanstalkd 1.8apt-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 在我的机器上运行的方式有问题。

我已经尝试在 中更改 pheanstalk 版本composer.json,但无论我使用哪个版本,我仍然遇到同样的问题。

问题是,这个问题似乎并没有得到特别广泛的记录,而且错误消息并没有真正泄露太多......

有什么建议吗?

4

3 回答 3

1

检查此响应:https ://stackoverflow.com/a/28226746/1427439

你可能有同样的问题。

基本上,确保你没有使用任何 Eloquent 模型和你传递给的闭包Mail::queue

于 2015-01-30T00:23:19.190 回答
0

您不能将对象传递给视图数据,因为 laravel 无法正确序列化它们,因此您只需将传递给视图的任何数据更改为简单的数据结构,如数组。

于 2014-05-26T15:58:09.353 回答
0

Laravel 序列化并加密它推送到队列的所有内容。您的应用程序加密密钥 ( app/config/app.php 'key') 是否设置为非空值?

您可以自己查询 beanstalkd 以查看哪些消息被推送到队列中吗?你应该看到像这样难以理解的字符串:

eyJpdiI6IlZwT1p6QkhXQ3BcL0lRUmlHXC9maE8xT2o5Rk1BSUtMM0d5SlRoKzcrSGNLTT0iLCJ2YWx1ZSI6Im02N05LQzNPamNZSmVpTW5kXC80NnkyWEl0RUFMZHFiQXo0VnlNYUlLUUQzSzUrZHNIS2Vlb1kxWkpRS1VFZm5SVERXeHduWEFQelE5SCtZbVBwRmk2QkJPTlB5ek1RNWpKM3JRTzBDSlB3N3orYmk5UmZwM0ZzNmlpVVdQWVdQNWtKSWVQVG5nK29MajcyM3VtTUdraE5SNXJXYUJyYUErb25iTUJGSzhQYms9IiwibWFjIjoiNGFmNjMwNjYxYzk4NmMyZTA2ZTZlMzAwZTBlZjZhMTA1OGM2NzAxNTBkNWUzYTA2MTY3NzNiMTU4NTRlMmEyOSJ9

该错误意味着您推送的字符串未加密,或者有一些东西阻止了将作业推送到队列中途。如果不出意外,您可以搜索该异常的文本(“用于反序列化的数据不足”),它应该会生成一个 PHP 文件vendor/pda/pheanstalk,您可以在其中尝试了解发生了什么。

于 2014-05-17T12:51:51.847 回答