我应该使用Laravel队列来管理我的应用程序中的线程吗?


Should I use Laravel Queues to manage threads across my application

我正在寻找多个第三方api来收集用户搜索查询的信息。我计划为我想要访问的每个API创建一个线程,以最大限度地减少我的响应时间。由于内存/cpu问题,我还想限制应用程序在任何时候可以运行的线程数量。

由于我使用Laravel作为我的框架,我试图使用Laravel队列来完成此操作,但似乎我可能无法从Job获得响应数据。

  • 旅行排队是解决这个问题的正确方法吗?如果有,我怎么监听作业的状态,并在作业完成后检索数据?我看到一些东西指向传递闭包给工作,但有些东西对我来说就是不合适。

看情况。如果需要进行大量的API调用,特别是当这些API调用非常缓慢时,作业队列和工作池可能是合适的。但是,我会尽量避免所有的架构,除非你真的确定你需要它。

首先,我会考虑对外部api进行异步请求,并尝试将整个过程保持在单个进程中。Guzzle HTTP客户端库提供了一个非常程序员友好的API来执行这种异步请求。

如果外部请求非常多或很慢,您可以考虑使用队列。但是在这种情况下,您需要实现一堆逻辑来将所有作业排队,然后轮询直到它们完成(在此过程中向用户提供反馈),最后返回合并的结果。这可能最终是必要的,但我将从上面描述的更简单的实现开始。