6

可能重复:
是什么导致 PHP 中“无法为池分配内存”?

今天我注意到下一个错误:

ErrorException: Warning: require() [function.require]: Unable to allocate memory for pool. in /symfony/symfony/src/Symfony/Component/ClassLoader/DebugClassLoader.php line 82

这是一个奇怪的错误,如果我重新加载页面,有时 2 个文件会出现此错误,有时是所有文件。

它在我的 JS 和 CSS 文件中。

4

1 回答 1

19

此错误通常与 Alternative PHP Cache (APC) 有关,它是 PHP 的免费且开放的操作码缓存。它的目标是为缓存和优化 PHP 中间代码提供一个免费、开放和健壮的框架。编辑/etc/php.d/apc.ini,输入:

# vi /etc/php.d/apc.ini

确保传递给 mmap 模块的 mktemp 样式的 file_mask 是正确且有效的:

apc.mmap_file_mask=/tmp/apc.XXXXXX

接下来确保每个共享内存段的大小,根据您的要求设置正确的 M/G 后缀。在我的情况下,它设置为 8M:

apc.shm_size=96M

您需要调整允许缓存条目在插槽中空闲的秒数,以防另一个条目需要此缓存条目插槽:

apc.ttl=3600

如果另一个条目需要此缓存条目插槽,则允许用户缓存条目在插槽中空闲的秒数:

apc.user_ttl=3600

缓存条目可以保留在垃圾收集列表中的秒数。

保存并关闭文件。确保根据您的要求调整值。重新启动 Apache 2 Web 服务器:

# service httpd restart
于 2013-01-16T16:59:21.427 回答