【发布时间】:2014-11-12 20:08:41
【问题描述】:
我的虚拟主机 one.com 预设 PHP 内存限制为 128 MB,他们说无法升级。我使用 PHP 脚本收集数据并将其存储在服务器上的 SQLite db 中(NB 文件 db,而不是内存)。
当数据库达到 128mb 时,它会停止运行 php 脚本。我不得不将数据库从头开始清除以使其再次运行。起初我认为它是一个小故障,但后来它再次发生在 128mb 处(关于忽略你无法解释的事情的教训......!)。
我无法弄清楚为什么内存限制会受到 SQLite db 文件大小的影响。该脚本通过 PDO 抽象层访问 SQLite db。我可以将其更改为使用 SQLite3 特定的数据库扩展,但这不会首先验证问题是什么。因此没有办法知道它是否会有所帮助。
在我深入研究之前,有没有人知道什么会导致这种奇怪的情况,我是否完全错过了一些明显的东西?
【问题讨论】:
-
SQLite 本身不是 PHP 的一部分,因此它不受 PHP 的内存限制(即使您确实使用“内存中”数据库)
-
是的,我知道它们是完全独立的,但感谢您澄清内存数据库的问题。我想我问的原因是因为 one.com Support 的回答,他将我关于 SQLite db 的查询与 128mb 的 PHP 内存限制联系起来
-
您的脚本会在 sqlite 数据库达到 128mb 之前达到内存限制,请记住,您的脚本也使用内存。
-
@Marek - 我正在通过 PDO 语句访问数据,只是搜索记录以查看是否存在匹配项,如果不存在则插入单个记录。有 3 张桌子,最多 8 列。这些都是小交易。每次 php 调用后,内存将被释放
-
@topspeed 我的意思是:如果按照 Jake 的建议将 sqlite 数据库的大小计入内存限制,那么您将无法达到 128mb,您自己的代码、变量等也会占用内存。我很惊讶马克贝克声称,内存数据库不是内存限制的一部分。