2

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

我正在考虑为需要导入的每种数据制作工作。但是,这意味着许多客户将提出需要由队列工作人员处理的工作,这意味着如果客户提出了一个工作来导入一个正在导入某种数据的工作,如果另一个客户也提出了一个工作要导入同一种数据,他必须等待第一个客户的工作完成,然后第二个客户的工作将由队列工作开始工作。但是我们不能让 100 个客户互相等待。

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

4

1 回答 1

0

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

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

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

于 2016-09-15T08:54:55.937 回答