Laravel 队列作业在后台不起作用

标签 laravel

嗨!我有一个应用程序,我必须在某些操作(例如用户创建等)中发送一些电子邮件。问题是它们没有在后台运行,而是我必须等到该过程完成,然后它会将我重定向到另一个页面。
我用 database司机与 queues , Laravel 5.2 .
我的电子邮件代码,用于 exp,在用户创建后:

$this->dispatch(new WelcomeEmail($user));
Artisan::call('queue:work');

哪里WelcomeEmail是被插入队列的作业。这种类型的代码放置在我想要发送电子邮件的所有地方。怎么了?

最佳答案

首先,您不想使用 Artisan::call在调度程序中的“队列”命令上。

您应该打开终端并执行:php artisan queue:listen --timeout=0 --tries=1你应该让它成为。
然后你可以访问你的页面,其中 $this->dispatch 甚至更好的 dispatch 方法将被调用。该页面上的代码应该是:dispatch(new WelcomeEmail($user));
在您的生产服务器上,您应该使用 supervisord 来监控您的 php artisan queue:listen命令,以确保它始终启动并运行。

如需进一步阅读,请访问:https://laravel.com/docs/5.2/queues

关于Laravel 队列作业在后台不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217460/

相关文章:

Vue 中的 Laravel 紧凑型

php - 正确的 SQL 到 Laravel ORM

php - laravel created_at 保存时时区不正确

laravel - 如何让 Laravel 异步工作?

laravel - 如何保持 Laravel 队列系统在服务器上运行

Laravel 4 框架 - 查询范围不起作用

Laravel 5.4 使用 Mail fake 和 Mail::queue,Mail::assertSent 不起作用

php - 自动生成pkpass文件并发送到钱包Iphone

laravel - 永久授权 PHP 应用程序向 JWT auth 保护 API 发出请求

php - Laravel 5.1 中未找到基表或 View