当APC缓存已满时,它会挂起Apache。 Apache响应请求,但是等待APC缓存永远释放一些资源,但这绝不会发生。
我使用自己的小型删除脚本每10分钟运行一次CRON作业,该脚本会从APC中删除过期的条目。好的,我可以为APC添加更多内存和/或我可以更频繁地运行清除脚本。但这不是真正的解决方案,我正在寻找一些如何处理问题的新方法。
答案 0 :(得分:1)
我发现设置ttl会在缓存已满时更改APC的行为。默认情况下,如果ttl为0,APC必须在缓存满时清空缓存。从手册:
如果缓存耗尽 可用内存,缓存将是 如果ttl等于,则完全清除 否则,如果ttl大于0,APC将尝试删除 过期的条目。
答案 1 :(得分:1)
这不是真正的最终解决方案,但我写了一些我在问题中提出的小PHP APC expunge script。此脚本每10分钟由CRON运行,并手动删除过期的项目。这远非完美的解决方案,但至少它有很大的帮助。
我仍在寻找最终解决方案。
答案 2 :(得分:0)
您可以尝试在经常执行的脚本中添加一行,以检查缓存是否已满,如果是,请处理它。 此类脚本的示例可以是建立与数据库的连接的脚本。