我应该使用Laravel Queues来管理我的应用程序中的线程

时间:2016-10-30 20:57:02

标签: php multithreading laravel laravel-5.3 laravel-queue

我希望点击多个第三方API来收集用户搜索查询的信息。我打算为我想要命中的每个API分离一个线程,以最大限度地缩短我的响应时间。我还想限制我的应用程序在任何时候运行的线程数量,因为内存/ CPU问题。

由于我使用Laravel作为我的框架,我试图使用Laravel队列完成此任务,但似乎我可能无法从作业中获取响应数据。

  • laravel排队是否正确解决这个问题?如果是这样,我该怎么做 听取作业的状态,并在作业完成后检索数据?我看到一些事情指向通过关闭工作,但有些东西不能点击给我。

1 个答案:

答案 0 :(得分:1)

这取决于。如果要进行大量的API调用,则可能需要作业队列和工作池,尤其是在这些API调用非常慢的情况下。但是,除非你确定需要它,否则我会尽量避免所有这些架构。

首先,我会考虑对外部API执行异步请求,并尝试将整个过程保留在一个进程中。 Guzzle HTTP client library为执行此类异步请求提供了一个程序员友好的API。

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