【问题标题】:Fatal error memory owing to being exhausted at runtime由于在运行时耗尽而导致的致命错误内存
【发布时间】:2012-03-19 02:59:12
【问题描述】:

致命错误:允许的内存大小为 33554432 字节已用尽(试图 分配 51 个字节)在 C:\xampp\htdocs\project\App\library\PEAR\MDB2\Driver\mysql.php上线 1160

我有一个大型数据库 (1.5GB),当我尝试在数据库中搜索信息时出现了该错误。我不知道如何解决?如果有人能提供帮助,谢谢。 :-)

【问题讨论】:

  • 显示一些你如何搜索的代码?
  • 数据库的大小根本不重要,除非您将数据库的全部内容吸入 PHP 并在 PHP 中搜索,这就引出了一个问题......为什么?跨度>
  • @Marc B,您对我正在使用的当前数据库做出了正确的猜测:-D。这个项目是人们希望我学习的,我不知道他们为什么这样做。
  • 那你就卡住了。要么修复搜索引擎,使搜索发生在不受 PHP 内存限制的 DBMS 内,要么提高 PHP 内存限制。您不能将 100 升水倒入 1 升的杯子中并期望它不会溢出。
  • @xdazz,项目不小,复制也是不可行的,我把它们都贴在这里了,真诚的。 MarcB,谢谢你的解释我现在明白了,

标签: php mysql pear mdb2


【解决方案1】:

从您可能在代码上执行的一些疯狂循环中分离出来您可能会收到该错误的最直接原因是如果您完全忽略了数据库的使用并试图将其全部加载到 PHP 中

但这太疯狂了! :)

如果您选择的数据库是基于 SQL 的,请尝试以下操作:

SELECT *
(...)  
LIMIT 20 // to get the first xx results only

顺便说一句,很高兴您正在学习大型数据库,因为大多数新手错误(例如非索引表和类似的东西都会立即显现出来)。

【讨论】:

  • 谢谢,我总是从这里的 TRUE 专业人士那里得到最好的答案。 :-)
  • 另外,我想补充一点,PHP 并不适合大规模计算(例如搜索 1.5GB 表),但是 SQL 非常适合这项工作。在 MySQL 中进行搜索,并将有限的结果集返回给 PHP。
猜你喜欢
  • 2015-07-02
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2012-04-20
  • 2017-06-21
  • 1970-01-01
  • 2014-07-28
  • 2017-12-13
相关资源
最近更新 更多