我尝试在谷歌中提供了很多链接,但到目前为止它还没有找到解决方案。
我想用redis建一个队列来发送邮件。
在我的.env中,我设置了
QUEUE_DRIVER=redis
在我的路线中,我创建了像这样的示例链接
$router->get('/email-with-queue', function () use ($router) {
dispatch(new App\Jobs\EmailJob());
return ['sending mail..'];
})
我在App \ jobs
中创建EmailJobnamespace App\Jobs;
class EmailJob extends Job{
public function __construct()
{
}
public function handle()
{
Mail::to("sendmailto@gmail.com")->send(new \App\Mail\CompleteOrder("Sending"));
}
}
我在App \ Mail上创建了CompleteOrder.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class CompleteOrder extends Mailable
{
use Queueable, SerializesModels;
public $order;
public function __construct($order)
{
$this->order = $order;
}
public function build()
{
return $this->subject("Completed ".$this->order." | ".date("Y-m-d H:i:s"))->view("mail.mail");
}
}
现在,当我运行http://xxx.dev/email-with-queue
时,发送邮件需要10秒。
当我运行php artisan queue:work
时,它仍然是空白
如何在laravel中运行队列。所以当我运行http://xxx.dev/email-with-queue
时,我只需要1,但它会发送带队列的邮件。