使用 Docker 来开发 PHP,Laradock 系列 4:队列进程
Laravel 具有队列功能,允许应用程序执行异步处理。如果我们只使用 laradock 的workspace
容器来执行php artisan queue:work
,那么你可能需要打开一个新的 workspace bash 会话来执行其他操作。我们需要在后台运行队列的某些东西/服务来简化我们的工作。当然,Laradock 有,它叫做php-worker
先决条件
如果你不知道 Laradock 是什么,那么请先操作一下它,然后按照这里设置你的 laravel 应用程序,然后尝试设置 mailhog 服务。 查看这里,关于如何配置它,并设置一个基本的 artisan 命令发送邮件。遵循这篇文章,这两个指南将帮助你(也是我减少目前的文章长度)得到基本需要的。
为你的项目创建一个 worker 配置
如果你阅读了我关于 laradock 介绍系列的第一篇文章,那么我们可以使用相同的目录例子:
- projects
|_ my-awesome-laravel-app
|_ laradock
在 laradock 目录,你将找到php-worker\supervisord.d\laravel-worker.conf.example
这个文件。将此文件复制为my-awesome-laravel-app-worker.conf
(名字可以是不同的,只要你以.conf
结尾)。
- projects
|_ my-awesome-laravel-app
|_ laradock
|_ php-worker
|_ supervisord.d
|_ laravel-worker.conf.example
|_ my-awesome-laravel-app-worker.conf
然后修改my-awesome-laravel-app-worker.conf
内容为:
[program:my-awesome-laravel-app-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/my-awesome-laravel-app/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
numprocs=8
user=laradock
redirect_stderr=true
这就是 worker 配置。
使用数据库队列连接
作为简单的演示解决方案,我们可以使用 数据库
进行队列连接。因此,在laravel项目的 .env
文件中设置如下值:
QUEUE_CONNECTION=database
如果还没有创建 jobs
表, 请继续进入 laradock 的工作区 bash 并执行 php artisan queue:table
和 php artisan migrate
来创建它。
现在执行 php artisan example:send-mail
命令创建它,正如我在关于 mailhog 的文章中所指示的那样。如果执行成功,则应在数据库中看到的 jobs
表。
运行 PHP-Worker 容器
不要再说了,在您的laradock目录运行这条命令
docker-compose up -d php-worker
现在队列应该发挥作用了,您可以在mailhog中看到电子邮件inbox.
在Laradock中体验 php-worker 的乐趣吧
laravel version used: 6.0 LTS
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。