排除 PHP 中的“无法为池分配内存”错误
PHP 中的“无法为池分配内存”错误表示APC缓存机制内存不足。当 PHP 的内部缓存耗尽可用内存时,就会出现此错误。
错误原因
根据提供的答案,此错误是由使用 Time To 引起的APC 的实时 (TTL) 为 0。当 APC 的缓存内存不足时,它会删除所有缓存的项目。虽然这解决了错误,但它严重降低了 APC 的效率。
解决方案:增加 APC 内存分配
要解决此问题,请通过调整apc.shm_size 指令。如果使用共享段内存,请检查系统限制并根据需要增加 apc.shm_segments。对于 mmap 内存,使用 apc.shm_size 选项进一步扩展内存。
替代解决方案
如果无法增加内存分配,请考虑实施过滤器以防止不常访问的 PHP文件被缓存。
避免将 TTL 设置为 0
切勿将 TTL 设置为 0,因为它会破坏 APC 的预期功能。此设置会降低 APC 的效率,并否定其作为缓存机制的价值。
监控和调整
使用 apc.php 工具定期检查 APC 配置。为内存分配留出 20% 的安全裕度并监控使用情况,以确保其保持稳定。
推荐的内存分配
默认的 32MB 内存分配通常是不够的。分配足够的内存来缓存大多数 PHP 文件。对于内存容量较大的服务器,请考虑为 APC 分配几 GB。
排除开发网站
要优化缓存效率,请从 APC 缓存中排除开发网站。
以上是## 如何修复 PHP 中的'无法为池分配内存”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!