【问题标题】:Laravel API speed (too slow)Laravel API 速度(太慢)
【发布时间】:2017-02-28 22:57:19
【问题描述】:

我正在尝试开发一个 API 来将来自多个应用程序的警报存储到数据库中。我正在用 Laravel 开发 api。

我制作了一个 C 程序,它向 API 发出多个 post 请求,以查看 laravel api 可以处理多少请求。

我在 api.php 中有以下路由

Route::post('/alarm', 'Api\v1\AlarmController@store');

在我的控制器中,我创建了 store 函数,它将 post 请求中收到的警报值存储到数据库中

function store(Request $request)
    {

        $content = $request->getContent();

       $json_content = json_decode($content);

        $id = $this->alarm_model->newAlarm($json_content);

        echo '{ "result": '.$id.', "msg":'.$content.' }';

    } 

然后我有一个警报模型,它将 json 值存储在数据库警报表中。

如果我发出 1000 个请求,它无法处理所有请求。我收到 HttpSendRequest 错误:12002 Internet 超时

我做错了吗? Laravel 框架每秒允许多少个请求?

【问题讨论】:

    标签: api laravel post httprequest rate-limiting


    【解决方案1】:

    没有限制,据我所知,这完全取决于您的环境,如果是小型服务器,我怀疑它是否能够每秒处理 1000 个请求。

    你可以做的是使用Laravel Queues

    我认为你的情况是你的服务器在尝试一次完成 1000 个请求时太忙了。这导致服务器响应“我很忙”信号。

    但是通过队列,您可以限制服务器上的压力并使其在几分钟内完成?

    方法:

    1. 创建工作php artisan make:job ProcessAlarms

    2. 在 Job 的 Handle 方法中,您放置了保存警报的逻辑

    3. 然后在控制器的store 方法中使用这个dispatch(new ProcessAlarm($data_you_want_to_pass));

    【讨论】:

    • 问题是,如果我对一个简单的 php 做同样的事情(将请求发布到一个将数据存储在数据库中的简单 php),服务器就能够处理 1000 个请求。所以我不知道我是否在 laravel 中做错了什么,或者 laravel 是否让服务器忙。
    • Win7 下 CPU i5-2430 2.4GHz 和 8Gb RAM 中的 1000 个请求是否太多?
    • 你也可以看看 Lumen,这是 Laravel 的一个轻量级变体,为了更快的 API 而精简
    猜你喜欢
    • 2018-03-14
    • 2023-01-19
    • 1970-01-01
    • 2015-06-06
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多