如何同时启动多个队列以在LARAVEL中实现多线程?

问题描述 投票:0回答:1

我想通过使用多线程同时从服务器获取数据。

多线程背后的原因是为了避免服务器及其资源上的负载。

所以,我发现了laravel队列,由于我是laravel的新手,所以我对此并不了解,但是在研发之后,我完成了工作并开发了一个可以逐个分派队列的工作,但是我希望那个队列可以从同一时间开始时间

php laravel multithreading multiprocessing lumen
1个回答
0
投票

您可以安装和使用Supervisor,然后可以通过numprocs=8属性对其进行配置,例如运行8个队列进程。

这里是有关安装和配置Supervisor的Laravel文档:https://laravel.com/docs/master/queues#supervisor-configuration

您还可以对队列进行分类,并将作业分派到特定队列(here is the docs,然后为每个队列使用带有多个配置文件的Supervisor。

  1. 安装主管

Supervisor是Linux操作系统的进程监视器,并且如果失败,它将自动重新启动您的queue:work流程。至在Ubuntu上安装Supervisor,您可以使用以下命令:

sudo apt-get install supervisor
  1. 配置主管

Supervisor配置文件通常存储在/etc/supervisor/conf.d目录。在此目录中,您可以创建任意数量的配置文件以指导主管您的过程应受到监控。例如,让我们创建一个laravel-worker.conf文件启动并监视队列:工作过程:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
stopwaitsecs=3600

在此示例中,numprocs指令将指示Supervisor运行8个queue:work流程并自动监视所有流程如果它们失败,请重新启动它们。您应该更改队列:work sqs命令指令的一部分以反映您所需的队列连接。

© www.soinside.com 2019 - 2024. All rights reserved.