Laravel异步请求的最佳实践

5
我有一个Laravel应用程序。当我的控制器每页只进行3-10个API时,应用程序可以完美地加载。现在,当我在控制器中每页进行200个API请求时,我开始看到延迟。
由于 Laravel 是 MVC 架构,所以控制器中的所有代码都需要完全执行并完成,然后它才会将所有数据/变量发送到视图,这导致了很多延迟。
我考虑异步执行这些API调用,但是我不确定哪种方法是最好的选择。
我进行了快速搜索,发现了以下选项:
- PHP cURL 异步:http://php.net/manual/en/function.curl-multi-init.php - Laravel 异步:https://laravel.com/docs/5.1/queues - PHP Promise:https://github.com/reactphp/promise 任何关于此事的指导/建议对我和其他遇到这个问题的人都非常重要。

我认为您正在错误的方向上解决问题。只需使用后台任务,让客户端请求更新进度即可。此外,根据结果缓存的生命周期进行缓存,而不是进行API调用。 - PeeHaa
另外,你的第二个链接与异步无关。 - PeeHaa
我正在研究 Laravel 队列,但我不确定这是否是解决此问题的最佳方法。 - code-8
你能否将一些请求合并成单个较大的请求吗?200个API调用以提供单个页面似乎太多了,但这取决于你正在做什么。 - James
1
为什么不能将这些 API 调用从阻止渲染视图的方法中移出,并使用类似 axios 的方式异步获取数据并呈现所需内容?如果您正在使用 vuejs 或任何其他前端框架,您应该能够删除这些阻塞式 API 调用并利用 js 来获取和呈现。 - light
1个回答

2

建议使用队列来解决这个问题。将任何调用都转移到队列中,并等待响应。

我建议不要在每页进行200次请求,这似乎过多。也许可以先尝试减少请求次数,再进行重新架构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接