我曾尝试使用 APC,但它似乎并没有像我预期的那样工作。
文件1:
$bar = 'BAR';
apc_store('foo', $bar, 3600);
var_dump(apc_fetch('foo')); // It works here. Displays BAR
文件2:
var_dump(apc_fetch('foo'));
当我在几秒钟内执行 file2
时,它返回 false
而不是缓存中存储的数据“BAR”。
最佳答案
它工作正常 :) - 只要您记住从命令行执行的每个 php 脚本都使用它自己的缓存,所以您将无法访问 script1 在 script2 中保存的数据。 (您无法在稍后运行的 script1 中访问它,因为它会在脚本完成时被清除)
这些缓存也与您最有可能想要使用的缓存分开,即通过您的网络服务器执行的 php 脚本的缓存。
因此,如果您将上面的那些测试保存在您的 webroot 中,那么您可以访问 http://localhost/file1.php , 然后 http://localhost/file2.php
它将按预期工作。
这也意味着您无法从命令行清除网络服务器的 APC 缓存。 缓存(用户缓存或操作码缓存)清除代码必须通过您的网络服务器执行。 它是来自 shell 的 wget 还是来自 php cli 的 file_get_contents() - 这取决于您的口味和环境。
关于PHP "apc_store"和 "apc_fetch"未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4092224/