如何在Laravel会话中存储大数据

How to Store Large Data in Laravel Session

提问人:Decrypt 提问时间:11/17/2023 最后编辑:Decrypt 更新时间:11/20/2023 访问量:21

问:

我在 Laravel 的导入过程中尝试处理大型错误收集时遇到了一个问题。我试图在会话中存储序列化错误集合,但是当集合大小超过某个限制时,由于内存限制(我猜)而无法存储它。

代码如下:

 public function import(Request $request)
    {
       // ... other codes

        DB::beginTransaction();
        try {
            $import = new EmployeeImport;
            Excel::import($import, $request->file('file_attachment'));

            if ($import->failures()->isNotEmpty()) {
                $errors = collect();
                foreach ($import->failures() as $failure) {
                    $rowNumber = $failure->row();
                    $attribute = $failure->attribute();
                    $errorMessages = $failure->errors();

                    $errors->push([
                        'rowNumber' => $rowNumber,
                        'attribute' => $attribute,
                        'messages' => $errorMessages,
                    ]);
                }

                DB::rollBack();
                $serializedCollection = serialize($errors);
                // dd($serializedCollection); // passed  
                return redirect()->route('employee.index')->with('import_error', $serializedCollection);
            }

            // ...
        } catch (\Throwable $th) {
           // ... catch any error
            }
        }
    }

我正在使用 Laravel 的方法将序列化错误集合 () 传递给会话。 当错误收集变得太大时,数据似乎没有存储在会话中,这可能是由于内存限制。 我在处理大型错误集合并在导入失败时向用户显示它们方面面临挑战。with()$serializedCollection

如何在导入过程中有效地处理大型错误收集并将它们存储在会话中,而不会面临 Laravel 中的内存限制? 是否有替代方法或最佳实践来管理和向用户显示大型错误集合,而无需严重依赖会话存储? 关于在导入过程中处理Laravel中的大量错误收集的任何指导或建议将不胜感激。谢谢。

PHP Laravel 会话

评论


答: 暂无答案