【问题标题】:Yii App Reaches Memory Limit On Linux ServerYii App 在 Linux 服务器上达到内存限制
【发布时间】:2012-11-15 10:24:00
【问题描述】:

我有一个非常奇怪的问题,我不知道如何解决它。我的应用程序不时达到内存限制,并且发生内部服务器错误 500。我的共享主机限制为 570MB。我尝试调试我的应用程序,YiiDebug 工具栏显示每个页面都消耗大约 10-12MB 的内存。我真的不明白问题出在哪里。在我的本地 wamp 服务器上,没有问题。

谁能帮助我?至少告诉我从哪里开始寻找内存泄漏,因为我看不到任何明显的东西。 这是不可预知的问题,它不会在某些特定请求上发生。 我已经在 index.php 中注释了“YII_DEBUG”行。

【问题讨论】:

  • ini_set('memory_limit', '570MB');

标签: php memory yii limit cpanel


【解决方案1】:

如果您有很多 AR 记录,您还可以查看刚刚登陆 master 的全新 CActiveDataProviderIterator。它还不是一个稳定的 Yii 版本的一部分,并且几乎没有文档(实际上我正在帮助解决这个问题)。但可能是您遇到一些内存限制的地方。

您是否通过任何更改来使用 GiiX?我发现它在某些地方效率相当低,导致需要更精简地查询......

【讨论】:

  • 不,我没有使用 giix.. 我真的不知道 AR 记录有多少?在首页上,我有 3 页的 CGridView(DataProvider 来自 AR)。我还有 4 个页面,所有页面都从 AR 获取数据。其中 3 个有大约 20-30 条记录,1 个有 50-60 条记录。有那么多 AR 记录吗?
  • 听起来还不错,如果您使用分页,应该没什么大不了的。您是否也在加载其他关系? Iterator 类的目标是加载 1000 条 AR 记录,看起来像
  • 问题可能出在 .htaccess 文件中吗?我有 RewriteEngine 在那里将 http 访问重定向到 https。
  • 怀疑,我做了类似的事情没有问题。当您遇到问题时,系统是否会通过电子邮件向您发送错误信息? Yii 可以将错误全部记录/通过电子邮件发送给管理员。可能是追踪它的最简单方法...
  • 在哪里可以设置将错误通过电子邮件发送给管理员?问题可能是因为我在使用后没有取消设置变量吗?我认为 PHP 会自动执行此操作。
【解决方案2】:

查看帖子 - http://www.yiiframework.com/forum/index.php/topic/15647-memory-usage/

有点过时,但要点仍然相关。

如果可以,请使用某种缓存软件来完善 Active Record 系统。

如果您使用 Active Record,请确保加载的模型数量不要太多。

调试需要额外的内存 - 如果您不需要它,请禁用它。

如果问题仍然存在,请考虑从活动记录转移到 DAO,但这可能会很麻烦。

你使用的是什么版本的 Yii?您网站上的典型访问者数量是多少?

【讨论】:

  • 谢谢,我去看看那个链接。我正在使用最新的 Yii 版本,我的网站并不拥挤。它是一个协会的小型 Intranet。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2012-03-04
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多