我正在尝试开发一个API,将来自多个应用程序的警报存储到数据库中。我正在用Laravel开发api。
我已经制作了一个C程序,它向API发出多个帖子请求,以便查看laravel api进程有多少请求。
我在api.php中有以下路线
Route::post('/alarm', 'Api\v1\AlarmController@store');
在我的控制器中,我创建了存储功能,将发布请求中收到的警报值存储到数据库中
function store(Request $request)
{
$content = $request->getContent();
$json_content = json_decode($content);
$id = $this->alarm_model->newAlarm($json_content);
echo '{ "result": '.$id.', "msg":'.$content.' }';
}
然后我有一个Alarm模型,它将json值存储在数据库报警表中。
如果我发出1000个请求,则无法处理所有请求。我得到HttpSendRequest错误:12002 Internet Timeout
我做错了吗?每秒有多少请求允许Laravel框架?
答案 0 :(得分:0)
没有限制,据我所知,这一切都取决于你的环境,如果它是一个小型服务器,我怀疑它能够每秒处理1000个请求。
您可以做的是使用Laravel Queues
我认为最终发生的事情是,当您尝试一次完成1000个请求时,您的服务器会变得太忙。这导致服务器响应“我忙”信号。
但是有了队列,你可以限制服务器上的压力并在几分钟内完成它吗?
如何:
创建作业php artisan make:job ProcessAlarms
在Job's Handle方法中,您输入了保存警报的逻辑
然后在您的Controller的store
方法中使用此dispatch(new ProcessAlarm($data_you_want_to_pass));