如何避免出现“内存不足”错误?


7

我目前正在使用Drupal 7,并且已安装以下模块,所有模块均已更新至各自的最新版本:

  • 视图-7.x-3.0-beta3
  • CTools-7.x-1.0-alpha4
  • 面板-7.x-3.0-alpha3
  • 规则,ACL,高级论坛,论坛访问权限,用户点数,BUEditor

我不断收到“ PHP致命错误:内存不足”。我的服务器的限制是我的提供程序允许的最大限制(32 MB)。这些错误通常在与模块页面进行交互时出现,但对于尝试更新密码或编辑节点的任何用户也会出现。

因此,您对降低内存使用量有何建议?

PS:我注意到大多数此类错误包括视图和视图插件.inc文件。但这也涉及核心模块和系统中的.inc文件。如果您愿意,我可以在其中复制一些文件。

Answers:


6

在这种情况下,您实际上无能为力。Drupal 7需要相当大的内存,视图,面板等也需要。

如果无法升级到至少拥有128MB的托管计划,那么我至少要确保禁用以下模块:

  • 更新管理器
  • 数据库记录
  • 现场用户界面
  • 视图用户界面
  • 面板就地编辑器
  • 任何其他“ UI”模块

在本地进行开发,并使用版本控制和功能更新您的生产环境。


2
注意只有在编辑现有视图或添加新视图时才需要Views UI;对于正常使用,不需要Views UI,即使禁用了该模块,Views仍可以正常工作。
kiamlaluno

1
确切地说,其他任何“ UI”模块也是如此。它们仅是发展所必需的。字段将工作没有用户界面,所以才会上下文等。
亚历克斯·韦伯

4
但是,视图(而非UI)本身目前具有巨大的覆盖范围。我最近一直在努力解决Drupal的内存占用问题,并且注意到视图既加载架构缓存,又在显示视图的每个页面上加载它自己的数据缓存。这很容易意味着一个站点上安装了几个模块的数兆字节(在我的测试安装中约为4MB)。
伯迪尔

我不得不不同意您使用功能的建议-该模块是一个巨大的内存消耗。使用更新挂钩来部署配置更改会更好。
菲利克斯·夏娃

有趣的是,在共享主机上设置现有的D7站点并使用视图遇到许多内存问题后,我发现将PHP版本从7更改为5.6很有帮助。不能确定原因,但是我已经知道允许1024M的内存,并且在视图中显示16个项目时它仍然耗尽。
jammypeach

4

Drupal的系统要求中所列,Drupal Core本身需要32M才能运行。在不增加内存的情况下添加任何已贡献的模块是解决此错误的一种可靠方法。

如果您的服务器的最大容量只有32M,那么就该开始新的托管了。


不好的是,我刚刚更改了它……我认为我坚持了至少一年……必须检查一下。:(
nyoz

顺便说一句,我的房东是1&1 France。我在一些wordpress支持论坛上读到,他们最近将php限制升级到90Mb。我星期一打电话给他们!;)
nyoz

2

如上所述,最重要的是您实际上需要128M。另一点需要注意的是,如果您的映像套件正常工作,这通常会提醒我们(至少在Drupal 6中),在某些情况下至少需要96M。

32M只是不会削减它。


0

我认为使用“视图”模块是您最大的问题。

重写所有使用带有自定义查询的视图的页面,删除views模块,与此同时,它也删除Rules(同样,将所有逻辑移至代码),并且您的内存使用率将下降。

同样,只需编写模板文件并使用预处理钩子,就不需要面板节省更多的内存。

这些不是容易或快速的步骤,并且需要对Drupal,MySql和PHP有深入的了解,但是如果性能是第一要务,则这是最佳解决方案(它将在32M的内存上运行)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.