【发布时间】:2018-02-22 14:04:00
【问题描述】:
我有一个 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 承诺:https://github.com/reactphp/promise
对此的任何指示/建议对我和其他面临此问题的人来说意义重大。
【问题讨论】:
-
IMO 你试图以错误的方式解决它。只需使用后台任务,然后让客户端要求更新进度即可。还取决于结果的生命周期,而不是进行 api 调用。
-
另外你的第二个链接与异步无关
-
我现在正在研究 Laravel 队列,但我不确定这是否是解决此问题的最佳方法。
-
你不能把一些请求合并成一个更大的请求吗? 200 个 api 调用来交付一个页面似乎太多了,但这取决于你在做什么。
-
为什么不能将这些 api 调用移出阻止呈现视图的方法,并使用 axios 之类的东西来异步获取数据并呈现您需要的内容?如果您使用的是 vuejs 或任何其他前端框架,您应该能够移除那些阻塞的 api 调用并利用 js 来获取和渲染。
标签: php laravel curl asynchronous laravel-5