【发布时间】:2017-11-18 06:27:33
【问题描述】:
从一个控制器,我派出一个工作来发送一封欢迎电子邮件,使用
$this->dispatch(new SendWelcomeEmail($user));
在 SendWelcomeEmail 我正在做的工作
public function handle(Mailer $mailer)
{
$mailer->send('emails.welcome', ['data' => 'data'], function ($m) {
$m->from('noreply@gmail.com', 'Noreply');
$m->to('xyz@live.com', 'xyz')->subject('Welcome');
});
}
我的 .env 文件配置为
QUEUE_DRIVER=database
MAIL_DRIVER=smtp
MAIL_HOST=email-smtp.us-east-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=*access*
MAIL_PASSWORD=*key*
MAIL_ENCRYPTION=tls
已检查:
- 数据库迁移 - “作业”表
- 使用
php artisan queue:listen在作业调度触发器之前运行队列侦听器
问题:作业已加载到数据库中的“作业”表中,但未处理。但是当我更新队列驱动器时,这工作完全正常。
QUEUE_DRIVER=sync
我在这里错过了什么?
【问题讨论】:
-
同步驱动程序工作的原因是因为作业立即使用该驱动程序集进行处理,实际上没有与“队列”交互,因为它都是同步的。就异常而言,是否有任何东西被注销?超时?
-
你运行了 php artisan queue:work
-
是的 - 这是记录的错误。 - local.ERROR:异常“ErrorException”,消息“stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败”
标签: php laravel laravel-5.2 laravel-artisan