Laravel documentation最大的缺点之一是缺乏有关配置基础设施的信息,这对于使用Redis设置队列尤其如此,Redis以其性能和高可用性而闻名,但也很难正确配置,特别是当错误配置的后果可能严重影响Web应用程序时。
如何设置Redis来处理我的Laravel队列?
Laravel documentation最大的缺点之一是缺乏有关配置基础设施的信息,这对于使用Redis设置队列尤其如此,Redis以其性能和高可用性而闻名,但也很难正确配置,特别是当错误配置的后果可能严重影响Web应用程序时。
如何设置Redis来处理我的Laravel队列?
1条答案
按热度按时间plicqrtu1#
开始,你应该首先确保你有both the components,你需要运行Redis。然而,正如我在生产服务器上学到的那样,即使
phpredis
扩展和Redis服务器都在工作,你的队列仍然不会运行--尽管你需要在documentation中向下滚动很长一段时间才能第一次提到一个worker,你需要一个开始处理队列中的任何作业。可以通过运行以下命令来启动队列worker:
字符串
但是,在生产环境中不建议这样做,因为工作进程无法重新启动,每次发现队列不工作时,都需要您通过SSH连接到服务器并手动重新启动。
相反,您可以设置
supervisor
-最常用的Linux进程监视器-以确保队列工作器在重新引导后总是自动重启。这也将允许您随时运行php artisan queue:restart
命令,并确信队列工作器将正常关闭并重新启动。在Ubuntu上安装supervisor:
型
为您的队列worker创建配置文件:
型
在您刚刚打开的空白文件中,将以下所有内容粘贴到其中:
型
myapp-worker
替换为文件名maxtime
和stopwaitsecs
设置为高于运行时间最长的作业的值user
替换为要运行命令的用户名numprocs
与服务器的CPU核心数大致相同完成上述更改后,按Ctrl+O和Enter键保存文件。
运行以下命令,告诉Supervisor重新读取配置并启动创建的工作进程:
型
最后,要验证您的队列worker是否正在运行,请运行:
型
您的队列worker现在将处理任何传入的作业。