关于php.net的文档非常不清楚APC写入失败的原因。什么样的场景会导致调用apc_store()失败?
有足够的可用磁盘空间,而且失败很多。有时商店运营会成功,有时会失败。
答案 0 :(得分:46)
对于php cli,需要使用其他选项启用: apc.enable_cli =开
在我的情况下,它在从webbrowser运行时工作,但在用php cli执行相同的东西时却没有。
答案 1 :(得分:8)
我有完全相同的情况。
我将我的代码从使用Cron Jobs迁移到使用通过supervisord管理的Gearman Workers。
一切都破灭了。我无法通过APC获得缓存,并且不得不恢复使用文件库缓存。
最终我发现当我使用cron作业时,我会通过wget而不是命令行加载每个页面。这种差异意味着将通过命令行加载我的PHP脚本的supervisord将无法工作,因为默认情况下APC将无法通过命令行工作。
修复......
apc.enable_cli=On
答案 2 :(得分:6)
内存不足(为apc分配内存,即)
答案 3 :(得分:4)
这个asinine(由于某些原因关闭)bug是我的问题:
http://pecl.php.net/bugs/bug.php?id=16814
必须回滚到apc版本3.1.2以使apc工作。没有摆弄php.ini中的apc设置帮助(我在mac os 10.5上,使用apache 2,php 5.3)。
对我来说,这个测试脚本显示3.1.2的3“trues”和3.1.3p1的true / false / true
var_dump(apc_store('test','one')); var_dump(apc_store('test','two')); var_dump(apc_store('diff','thr'));
答案 4 :(得分:2)
http://php.net/manual/en/apc.configuration.php
php.ini上的apc.ttl和apc.user_ttl设置:
将此值保留为零意味着APC的缓存可能会填满陈旧条目,而新条目不会被缓存。
答案 5 :(得分:1)
磁盘空间不足或存储目录被拒绝?
答案 6 :(得分:1)
除了Greg所说的,我还要补充说配置错误可能导致这种情况。
答案 7 :(得分:1)
apc_store将失败。因此,您几乎可以忽略返回false,因为它确实失败但缓存仍然存在。如果你想解决这个问题,请改用apc_add。 http://php.net/manual/en/function.apc-add.php
答案 8 :(得分:1)
使用ubuntu 10.04和debian stable安装的版本中存在一个错误。如果您使用此版本替换软件包:http://packages.debian.org/sid/php-apc(3.1.7)它可以正常工作。