【问题标题】:APC doesn't respect PHP's Display error OffAPC 不尊重 PHP 的显示错误关闭
【发布时间】:2014-09-30 11:18:36
【问题描述】:

我的生产站点收到大量警告。喜欢

PHP: Require_once(): Unable To Allocate Memory For Pool

我知道它是由 APC 引起的,在我增加 shm_size 并减少 gc_ttl 之后它就消失了。但我的问题是它是如何在网页中显示该警告的?我已禁用 display PHP errors 并记录它,它不会在网站上显示任何 PHP 错误。

为了测试这一点,我特意创建了一个脚本,它会抛出 PHP 警告和通知,是的,我满意的是,这些只是被记录下来,而不是像 APC 错误那样显示。

那么,如何在生产站点中禁用 APC 警告? (以防万一再次发生)

【问题讨论】:

  • 尝试通过 php.ini 设置它。如果你重新启动你的 httpd,问题可能就消失了.. :)
  • 试试什么设置?在 php.ini display_errors = Off 已经
  • 我做了一些研究,似乎无法通过 php.ini 将其关闭。我在 apc.ini 中也找不到关闭错误的设置。所以,我想你应该修复它^_^ stackoverflow.com/a/3723338/1437261
  • 顺便问下好问题。赞成:)

标签: php apc


【解决方案1】:

我认为您应该在conf.d 目录中编辑apc.ini 而不是php.ini。使用 phpinfo() 查看 php.ini 使用的 apc.ini 在哪里。

检查目录中是否存在且正确的掩码(掩码为“XXXXX”):

apc.mmap_file_mask=/tmp/apc.XXXXXX

增加内存到:

apc.shm_size=96M

将内存时间设置为实时设置:

apc.ttl=3600

以及临时缓存增加:

apc.gc_ttl=3600

重新加载你的 apache/nginx。

之后需要查找内存使用情况并设置apc.ttl和apc.shm_size。将/usr/share/php-pecl-apc/apc.php复制到我们的www项目并通过浏览器apc.php运行。

在apc.php中编辑apc.php管理员密码:

defaults('ADMIN_PASSWORD','type-here-admin-password');

保存并通过浏览器运行。然后在File cache information中找到Hits,看看内存快用完了。

从上面减少 ttl 值,这样就不会出现内存错误。

【讨论】:

  • 感谢您抽出宝贵时间回复,但您的回答并不能真正满足我的问题。我知道如果我设置了apc.ttl=0,那么我将永远不会遇到内存错误,因为apc 总是会重新加载缓存,但这不是有效的方法。我希望apc在后台工作并记录错误/警告/通知而不是显示它。
  • 你不应该设置apc.ttl=0,因为APC会在内存不足时刷新所有缓存。让您的 APC 脚本每 1 小时检查 30% 的可用 APC 内存。如果您没有使用脚本更改内存的 apc 缓存。查看此行github.com/khoaofgod/phpfastcache/blob/Stable-Version-1.x/… 并为您设置 APC 商店的时间限制。这是你设置的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2010-10-02
  • 2012-11-01
  • 2012-11-05
  • 1970-01-01
相关资源
最近更新 更多