使用 Docker 来开发 PHP,Laradock 系列 4:队列进程

PHP

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:tablephp 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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://dev.to/dendihandian/php-worker-i...

译文地址:https://learnku.com/php/t/43015

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!