Laravel 大数据验证超时
Laravel validation timesout for huge data
我有 laravel FormRequest,它准备验证规则。我在最后转储了 prepareForValidation 函数,它立即显示转储。但是当我尝试在控制器中调用 $request->validation()
函数时,它花费的时间太长了。我有像 required|numeric|max:999999.99|min:0|email
这样的验证。当我发送 1000 件物品时,每件物品将近 45 个字段。
在我的代码端验证之前没有任何操作。有什么解决办法来处理这种事情吗?请求通过 api.
发送
Laravel 大型数组的验证速度很慢。我已将 issue and PR 发送至 Laravel 以修复它。我的 PR 没有被接受。
在修复 Laravel:
之前你现在可以做什么
- 对于数组验证,将验证数组大小与验证项分开。这可以确保当用户向您发送大型数组时,您的服务器 CPU 不会被浪费:
$request->validate(['array' => 'required|array|max:100']);
$request->validate(['array.*' => 'required|numeric|max:1000']);
- 如果可能,请将您的 API 设计为不使用大型数组。不管验证速度如何,接受大型数组毕竟不是最佳实践。不接受大小为 10,000 的数组。如果用户需要向您的服务器发送 10,000 条记录,也许他们应该通过 100 个请求发送它们,每个请求包含 100 条记录。
- 您还可以以较小的块来验证数据以提高性能。
collect($request['array'])->chunk(100)->each(function (array $chunk) {
Validator::validate(
['array' => $chunk],
['array.*' => 'required|numeric|max:1000']);
});
- 您始终可以选择通过 Laravel 验证以外的方式来验证输入。它可能比你想象的要简单。
我有 laravel FormRequest,它准备验证规则。我在最后转储了 prepareForValidation 函数,它立即显示转储。但是当我尝试在控制器中调用 $request->validation()
函数时,它花费的时间太长了。我有像 required|numeric|max:999999.99|min:0|email
这样的验证。当我发送 1000 件物品时,每件物品将近 45 个字段。
在我的代码端验证之前没有任何操作。有什么解决办法来处理这种事情吗?请求通过 api.
发送Laravel 大型数组的验证速度很慢。我已将 issue and PR 发送至 Laravel 以修复它。我的 PR 没有被接受。 在修复 Laravel:
之前你现在可以做什么- 对于数组验证,将验证数组大小与验证项分开。这可以确保当用户向您发送大型数组时,您的服务器 CPU 不会被浪费:
$request->validate(['array' => 'required|array|max:100']);
$request->validate(['array.*' => 'required|numeric|max:1000']);
- 如果可能,请将您的 API 设计为不使用大型数组。不管验证速度如何,接受大型数组毕竟不是最佳实践。不接受大小为 10,000 的数组。如果用户需要向您的服务器发送 10,000 条记录,也许他们应该通过 100 个请求发送它们,每个请求包含 100 条记录。
- 您还可以以较小的块来验证数据以提高性能。
collect($request['array'])->chunk(100)->each(function (array $chunk) {
Validator::validate(
['array' => $chunk],
['array.*' => 'required|numeric|max:1000']);
});
- 您始终可以选择通过 Laravel 验证以外的方式来验证输入。它可能比你想象的要简单。