我正在尝试使用 CakePHP 2.1 的方法保存超过 10000 条记录的列表,saveMany()
. 但它给了我一个 500 错误,或者一个“内存耗尽”的致命错误。
如果我在处理完整个数组后对其进行调试(因此,不调用 save 方法),时间在 0.05 秒以下。但是当我添加保存方法 ( $this->saveMany($save, array('validate' => false));
) 时,它向我显示了上述错误之一。
我提到我使用 InnoDB 作为 MySQL 中的存储引擎,使用 PHP 作为脚本语言。
我做错了什么,我该如何解决?
编辑
我回到这个问题,因为我“解决了”为什么没有保存大量记录。原因是……好吧,甚至一条记录都没有保存。我测试了只保存生成的数组中的第一个元素,这就是它发生的情况:它增加内存直到限制,然后它死了。我已经把它放在我的本地主机上,有 2GB 的内存,它仍然给我超出内存的错误。这很奇怪,我不明白为什么会这样。应用于另一个模型的相同代码按预期工作。我重新创建了模型及其表,但没有成功。我能想到的唯一原因是表名的长度,但这对我来说毫无意义。仅仅为了保存一条记录,什么会导致内存增加?