PHP“apc_store”和“apc_fetch”未按预期工作

时间:2010-11-03 22:27:41

标签: php caching apc

我试图使用APC,但似乎没有像我预期的那样工作。

文件1:

$bar = 'BAR';
apc_store('foo', $bar, 3600);
var_dump(apc_fetch('foo'));           // It works here. Displays BAR

file2的:

var_dump(apc_fetch('foo'));

当我在几秒钟内执行file2时,它会返回false而不是'BAR',这是存储在缓存中的数据。

2 个答案:

答案 0 :(得分:4)

它工作正常:) - 只要你记得从命令行执行的每个php脚本都使用它自己的缓存,所以你将无法访问script2中script1保存的数据。 (你不能在以后的script1运行中访问它,因为它在脚本完成时被清除)

这些缓存也与您最有可能要使用的缓存分开,这是通过Web服务器执行的PHP脚本的缓存。

因此,如果您将上述测试保存在您的webroot中,那么您可以访问 那么http://localhost/file1.php http://localhost/file2.php

它会按预期工作。

这也意味着您无法从命令行清除Web服务器的APC缓存。 缓存(用户缓存或操作码缓存)清除代码必须通过您的Web服务器执行。 它是来自shell的wget,还是来自php cli的file_get_contents() - 这取决于你的品味和环境。

答案 1 :(得分:0)

将此(http://svn.php.net/viewvc/pecl/apc/trunk/apc.php?view=markup)安装在服务器的受保护区域,按照评论中的描述进行设置,这样可以轻松诊断您的APC缓存问题......或至少为您提供更好的洞察力为什么事情没有按照预期发挥作用。