【问题标题】:How to Launch multiple QUEUES same time to achieve multi threading in LARAVEL?如何在 LARAVEL 中同时启动多个 QUEUE 以实现多线程?
【发布时间】:2019-12-21 18:38:18
【问题描述】:

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

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

所以,我发现了 laravel 队列,因为我是 laravel 的新手,所以我不太了解它,但是经过研发后,我完成了这项工作并开发了一项工作,该工作一个接一个地调度队列,但我希望该队列将从同一时间

【问题讨论】:

  • 多线程并不能避免服务器负载。如果将其分成多个队列,而不是 1 个,理论上将使用更多资源,因为每个队列都有自己的资源来运行队列,更不用说队列处理的作业了。答案可能更可能在于您如何处理要放入队列的代码。但无论如何这里没有足够的信息。

标签: php laravel multithreading multiprocessing lumen


【解决方案1】:

您可以安装和使用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. 配置主管

主管配置文件通常存储在 /etc/supervisor/conf.d 目录。在此目录中,您可以 创建任意数量的配置文件,指导主管如何 您的流程应该受到监控。例如,让我们创建一个 laravel-worker.conf 文件启动和监视queue:work 进程:

[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 进程并自动监控所有进程 如果失败则重新启动它们。你应该改变queue:work sqs command 指令的一部分,以反映您想要的队列 连接。

【讨论】:

  • 首先在 localhost 中执行此操作的正确过程应该是什么?
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多