我正在使用启用了APC缓存的PHP:
apc.cache_by_default => On
apc.enabled => On
apc.ttl => 7200
Run Code Online (Sandbox Code Playgroud)
现在我怎么知道它是否100%使用操作码缓存.
例如,让我们说我有这个PHP文件:
<?php
echo "Hi there";
?>
Run Code Online (Sandbox Code Playgroud)
现在运行此文件后,让我们将其更改为 echo "Bye there";
不应该回应"你好",因为7200秒的TTL尚未结束?我对吗?如果是这样,为什么它会回应"再见"?如果我错了,即使更改文件后如何强制它使用操作码缓存?
Sim*_*ast 21
我能找到告诉APC是否正常工作的最简单方法是创建一个包含此代码的新PHP文件...
<pre><?php
print_r(apc_cache_info());
Run Code Online (Sandbox Code Playgroud)
它将apc_cache_info()的内容转储到屏幕上(小心,在一个大型的实时站点上,这可能是很多数据!).
每次重新加载此PHP文件时,都应该看到num_hits增加,这意味着使用了操作码缓存.未命中表示APC必须从源重新编译文件(通常在每次更改时完成).
要获得此信息的更好界面,您可以使用apc.phpAPC附带的文件.我使用此控制台命令将其复制到我的网站目录(您的文件夹位置可能不同)...
cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/html/apc-stats.php
Run Code Online (Sandbox Code Playgroud)
在浏览器中运行此文件可为您提供漂亮的颜色和图形!

有关详细信息,请参阅此链接:http:
//www.electrictoolbox.com/apc-php-cache-information/
irc*_*ell 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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将迭代每个缓存检查指定文件的文件,因此效率不高.
就您的具体问题而言,APC会在文件发生变化时自动使文件的缓存无效.因此,当您编辑文件时,APC会静默检测到该文件并提供新文件.您可以通过设置禁用此功能apc.stat = 0.