我想按照https://laravel.com/docs/5.5/mail#queueing-mail中解释的那样对邮件进行排队。
这是我到目前为止所做的:
我更改了QUEUE_DRIVER
文件
.env
QUEUE_DRIVER=database
我创建了job table
php artisan queue:table
php artisan migrate
我将这样的邮件添加到队列中:
Mail::to($request->user())
->queue(new OrderShipped($order));
我设置了一个cronjob,它会像docs中所解释的那样发送查询的邮件:
protected function schedule(Schedule $schedule)
{
$schedule->command('php artisan queue:work --once')->everyMinute();
}
如果我只写$schedule->command('php artisan queue:work')->everyMinute();
,那么工作流程永远不会停止,所以服务器在某些时候会非常繁忙,有很多并行工作流程,对吗?
为了查询带有laravel的邮件,我是否遗漏了任何重要内容?另外,如果我想每分钟发送最多5封邮件 - 我怎么能实现这一目标呢?
答案 0 :(得分:0)
我认为不是cron job,而是设置一个supervisor配置。它将有助于监视队列作业。可以使用以下文档轻松配置它。
https://laravel.com/docs/5.5/queues#supervisor-configuration
答案 1 :(得分:0)
我认为不是每分钟都开始命令
php artisan queue:work --once
最好一次启动工作队列并添加一个睡眠定时器:
php artisan queue:work --sleep=60
这会每分钟完成一项工作。如果一个人每分钟想做5个工作就可以减少睡眠时间:
php artisan queue:work --sleep=12