【问题标题】:Drupal 7 site maxing out memory when saving nodeDrupal 7站点在保存节点时最大化内存
【发布时间】:2013-11-23 12:22:53
【问题描述】:

保存特定节点时,我的 Drupal 7 遇到 WSOD,这会显示在错误日志中:

PHP Fatal error:  Allowed memory size of 633339904 bytes exhausted (tried to allocate 84 bytes) in /var/www/mysite.org/includes/form.inc on line 1780, referer: http://mysite.or/node/193/edit

保存其他节点,看来是这个节点有问题。我怎样才能弄清楚是什么功能最大化了内存?你甚至如何开始调试这样的东西?如果 Drupal 在看门狗中记录了错误但那里也没有任何内容,那会更有帮助。

如您所见,PHP 拥有 600M 的大容量内存(这是一个拥有 16GB RAM 的大型网站)。

有什么想法吗?

【问题讨论】:

  • 关于此节点与其他节点的区别的任何具体提示?该节点使用的任何特定模块?
  • 确实600M相当大方。您是否有任何图像或大型媒体内容附加到此节点?您在网站上是否有任何可能存在导致此问题的错误的自定义模块?

标签: php debugging drupal-7


【解决方案1】:

从技术上讲,您可以在关闭函数中捕获错误:

register_shutdown_function(function() {
  var_dump(error_get_last());
});

但是看到您已经有了问题发生的类型、文件和行,这并不是很有用。在实践中,您通常希望通过在需要的地方插入 debug_backtrace()var_dump()die() 语句来跟踪正在发生的事情。

【讨论】:

  • 这个函数,不是drupal特有的吗?它只是在我所有的php函数结束时自动调用?如果是这样的话,真是太棒了!
  • 是的,这些都是标准的php函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多