【问题标题】:Out of Memory although increasing momery limit尽管增加了内存限制,但内存不足
【发布时间】:2012-06-14 12:52:31
【问题描述】:

当我使用 php 语言为大数据执行一些脚本时,例如导出数据、提取和打印数据,发生错误:

Fatal error: Out of memory (allocated 493617152) (tried to allocate 345571051 bytes)

虽然我通过以下指令增加了脚本中的内存:

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

为了更加放心,我什至将php.ini文件中memory_limit的值修改为3072M:

memory_limit=3072M

所用服务器上的 RAM 大小为 4GB。

那里有什么问题?

【问题讨论】:

  • 如果你正在尝试的操作这么大,你最好把它分解。想想Gearman。或者,您可以通过使用 cron 将其分成小块进行不同的操作。
  • 更改ini文件后是否重启了web服务器?
  • 是的,我做了,昨天重置了,今天我重新检查!

标签: php memory


【解决方案1】:

ini_set('memory_limit', '3072M'); 被简单地忽略:没有脚本可以增加它自己的内存限制 - 对于任何共享网络主机来说都是一个很好的攻击向量!

编辑

如果从命令行运行,试试 php -d memory_limit=3072M /path/to/file

如果您从网络服务器运行它,请编辑 php.ini、-htaccess 或安装所需的任何内容

【讨论】:

  • -1 - 名称:memory_limit 默认值:“128M” 可更改:PHP_INI_ALL - 内存限制可以动态更改;虽然它很可能被托管公司禁用
  • 我已经编辑了 php.ini 文件并设置了新值,我也从脚本中设置了值,但同样的错误出现在大数据中!
猜你喜欢
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2023-02-09
  • 2016-08-13
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多