【问题标题】:Memory size exhausted while trying to use MySQLi尝试使用 MySQLi 时内存大小耗尽
【发布时间】:2013-04-02 12:01:26
【问题描述】:

我正在从那里使用 MysqliDb 类。

https://github.com/ajillion/PHP-MySQLi-Database-Class/blob/master/MysqliDb.php

当我在本地电脑上使用时,我没有任何问题。但我昨天买了主机。我大约 5 分钟前上传了我的文件,但没有用。我检查了我的主机并创建了 error_log 文件和这个..

PHP Fatal error:  Allowed memory size of 75497472 bytes exhausted (tried to allocate 4294967296 bytes) in /home/(..)/MysqliDb.php on line 417

这是什么问题?

我在我的配置文件中使用了这个代码。但同样没有用。

ini_set('memory_limit', '192M');

【问题讨论】:

  • 为什么提到call_user_func_array?你有任何数据指向它吗?如果有,为什么不在问题中包含它?
  • 他将标题与他链接的代码相关联。但是,这可能是较早的错误。不支持标题(其实写得不好)
  • 内存使用显然是问题所在,因此您尝试使用ini_set 的解决方案是一个有效的答案。您是否尝试过任何更大的数字——比如 300M?话虽如此,代码可能有问题需要这么多内存。也许您可以将代码发布到它崩溃的地方,以便我们可以看到它在做什么?
  • 我正在使用 php 版本 5.3.21 和 memory_limit 72M。我累了 500M 和同样的 :(

标签: php mysqli


【解决方案1】:

我认为那是您在数据库中使用 LongText。

请阅读此消息:https://bugs.php.net/bug.php?id=51386

所以在 bind_result 之前尝试mysqli::store_result

【讨论】:

  • 是的,我使用了 LongText。我在哪里可以在课堂上使用此代码以及如何使用?你能帮帮我吗?我查看了 store_result 但他们正在使用 ->query。
  • 我改成了mediumtext并修复了。
【解决方案2】:

ini_set 影响服务器限制的命令往往会被阻止(因此,您可能只能使用与显示错误相关的命令)。

请记住,您正在尝试分配 4.2 Gb,这对于网站来说是相当大的信息量。

建议:

  • 检查您是否正在创建一个无限循环,该循环试图加载大量信息(不仅在该类中,而且在您自己的代码中调用之前)。
  • 使用较轻的mysqli 类(您尝试过the one that comes by default with PHP 5)吗?
  • 检查您的问题是否可以通过另一种更轻松的方式(可能是异步的?对于网站来说内存量太大)解决,可能使用 C 或 C++ 等其他语言来释放 Apache 的负载。
  • 与您的托管服务提供商交谈并尝试说服他们让您加载 4.2 Gb 的数据。

【讨论】:

  • 所以,有人对我的回答进行了-1,但没有提供取消投票的“解决方案”?实际上并不是真正的协作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
相关资源
最近更新 更多