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

时间:2016-09-15 07:29:37

标签: multithreading laravel laravel-5 laravel-queue

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

我正在考虑为需要导入的每种数据创造就业机会。但是,这意味着许多客户将提高需要由队列工作人员工作的工作,这意味着如果客户已经提出工作来导入一个导入某种数据的工作,那么另一个客户也会提出工作要导入相同类型的数据,他必须等待第一个客户的工作完成,然后第二个客户的工作将开始通过队列工作。但是,我们不能让100个客户互相等待。

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

1 个答案:

答案 0 :(得分:0)

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

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

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