【问题标题】:Laravel handles user's concurrent requests sequentiallyLaravel 顺序处理用户的并发请求
【发布时间】:2019-09-26 05:12:32
【问题描述】:

Laravel 按顺序处理用户的并发请求。如何同时处理请求?似乎会话(保存在 Redis 存储中)阻止了并发请求,但也许这不是原因。问题出在哪里?

Vue 发送请求...

async manageData() {
   // array of chart's properties
   const charts = await axios.post('/report/chart_data', {id: this.id);
   // concurrent requests with variable 'charts'
   const result = await Promise.all(
      charts.map((chart, key) => axios.post('/report/data_range', {id: key}))
   );
}

.env 设置

SESSION_DRIVER=redis
SESSION_LIFETIME=120

web.php

Route::post('report/data_range','AnalyticsApp\ReportController@ChartDataGet');

ReportController.php

public function ChartDataGet(Request $request)
    {
        return Chart::find($request->id)
    }

请求的时间

【问题讨论】:

    标签: laravel session redis


    【解决方案1】:

    你第一次调用 axios 使用 await,这指定你等待它完成。您可以删除此 await,但似乎对于 data_range 是必需的。如果不需要,您可以删除。

    【讨论】:

    • 但即使我删除了“等待”,所有请求也没有同时处理
    • 此解决方案将调用 chart_data 转换为并行。然后它取决于服务器配置,因为这些调用得到应答
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多