我正在使用启用了APC缓存的PHP:
apc.cache_by_default => On
apc.enabled => On
apc.ttl => 7200
现在我怎么知道它是否100%使用操作码缓存。
例如,让我们说我有这个PHP文件:
<?php
echo "Hi there";
?>
现在运行此文件后,我们将其更改为echo "Bye there";
由于7200秒的TTL还没有结束,它不应该回应“你好”吗?我对吗?如果是这样,为什么它会回应“再见”?如果我错了,即使更改文件后如何强制它使用操作码缓存?
答案 0 :(得分:21)
我能找到告诉APC是否正常工作的最简单方法是创建一个包含此代码的新PHP文件......
<pre><?php
print_r(apc_cache_info());
它将apc_cache_info()的内容转储到屏幕上(小心,在一个大型的实时网站上,这可能是很多的数据!)。
每次重新加载此PHP文件时,都应该看到num_hits
增加,这意味着使用了操作码缓存。未命中表示APC必须从源重新编译文件(通常在每次更改时都会完成)。
要获得更好的此信息界面,您可以使用APC附带的apc.php
文件。我使用此控制台命令将其复制到我的网站目录(您的文件夹位置可能不同)...
cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/html/apc-stats.php
在浏览器中运行此文件可为您提供漂亮的颜色和图形!
有关详细信息,请参阅此链接:
http://www.electrictoolbox.com/apc-php-cache-information/
答案 1 :(得分:19)
我认为你不想在制作中这样做,但你可以随时使用apc_cache_info()
。
function is_file_cached($file) {
$info = apc_cache_info();
foreach ($info['cache_list'] as $cache) {
if ($cache['filename'] == $file) return true;
}
return false;
}
请注意,这会迭代每个缓存检查指定文件的文件,因此效率不高。
就您的具体问题而言,APC会在文件发生变化时自动使文件的缓存无效。因此,当您编辑文件时,APC会静默检测到该文件并提供新文件。您可以通过设置apc.stat = 0
来停用此功能。
答案 2 :(得分:9)
通常,APC会检查所请求的文件是否已被缓存,因为它已被缓存。您可以使用apc.stat控制此项。