我正在使用 CodeIgniter,但我在使用非常大的表单时遇到了一些性能问题。基本上它可以达到 1,000 个字段,因为它用于数据输入(许多字段具有相同的值,因此由于客户端代码,用户花费不到 30 分钟填写它)。
显示从数据库填充的表单只需不到一秒钟的时间。但是当用户单击提交时,现在获取 POST 数据而不是 DB 数据的完全相同的代码需要永远并且通常会超时。它适用于几百个字段(在 DB 中提交/插入不到 15 秒),但如果字段数量增加一倍,它突然需要更长的时间。
代码中有 3 个部分(我不会在此复制,因为涉及到许多领域的所有逻辑,它非常长且复杂):
- 准备对象内部的数据(来自数据库或表单)
- 使用表单验证
$this->form_validation->run()
- 数据库插入/编辑
从数据库读取数据进行编辑时,第 1 部分非常快。当数据来自 POST 时,它永远不会到达第 2 部分,因此它绝对不是表单验证或数据库插入的问题。
当我有时收到此消息时,我认为问题来自 Codeigniter 的 XSS 保护:
Maximum execution time of 90 seconds exceeded in (...)/system/core/Security.php
你知道使用这些是否有点慢?$this->post->input('fieldname', TRUE)
和$this->input->post(NULL, TRUE)
。Codeigniter 是否每次使用它们时都会进行大量计算,因此我是否应该在计算中使用它们之前将每个帖子输入保存到变量中?
或者我可以关闭 XSS 保护,因为它在我们的管理部分,但我真的不会那样做。
或者也许根本不是这样,我的代码有点糟糕?