multithreading - 如何处理laravel作业的多个线程?

标签 multithreading laravel laravel-5 laravel-queue

我正在一个laravel项目中工作,该项目涉及应用程序的客户,以通过各种其他API将数据导入到应用程序中。

我正在考虑为每种需要导入的数据制作作业。但是,这意味着许多客户将要筹集需要队列工作人员处理的工作,这意味着,如果一个客户提出一项要导入一个正在导入某种数据的工作的工作,而另一个客户也提出了一项工作,则该工作将被导入。要导入相同类型的数据,他将必须等待第一个客户的工作完成,然后才能通过队列工作来开始第二个客户的工作。但是,那时我们不能有100个客户互相等待。

那么,这种进口的可行解决方案是什么?我是否应该将作业放在哈希队列中,然后再调用这些队列?还是有更好的方法来处理此问题。有没有人曾经使用过这样的应用程序,即客户从各种API异步导入了数据。以及如何最好地处理它。

最佳答案

您指向正确的方向。您需要一个诸如Laravel的队列工作器-但您需要选择异步驱动程序。您可以使用内置驱动程序,也可以尝试安装自己的队列服务器,例如RabbitMQ。这是一个用于Laravel 5的RabbitMQ驱动程序的不错的软件包:

https://github.com/vladimir-yuldashev/laravel-queue-rabbitmq

这将使您所有的客户请求都将进入每个单独线程的异步队列。这些队列系统工作非常高效,我们可以说这是一种异步PHP。为了使PHP代码更加异步,您可以使用Guzzle HTTP包,该包提供Async Request(以及来自应用程序的PHP代码/服务器端的完整服务)。

关于multithreading - 如何处理laravel作业的多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505327/

相关文章:

javascript - 如何在 Vue 文件中使用 Blade?

windows - 在 Delphi 下终止应用程序时线程未终止

php - 测试 Laravel 中的重定向功能

oop - Laravel 中的 SOLID 原理与存储库模式

laravel - 当 TTR 耗尽时,QueueWorker 会发生什么?

php - 如何将父ID自动插入到另一个表中?

laravel - Laravel 模型中的可填写字段太多?

c# - 线程上下文和同步上下文

c# - 锁(X)与锁(类型(X))

c++ - 如何解决boost多线程简单程序的编译错误