Apc不缓存文件,只缓存用户数据。当我在localhost上测试时,APC缓存了我使用的所有文件。但它不适用于我的共享主机。这是配置问题吗?
这些是我的apc.php(APC 3.0.19)的统计数据:
在上图中,APC不使用任何内存。 这就是phpinfo()给我的:
在localhost上,我只访问http://localhost/test.php。 Apc将立即缓存localhost / test.php(类型文件)。但是在共享主机上,我没有看到它缓存文件(它可以缓存变量,如果我存储但不包含文件);
apc_add('APC TEST', '123');
echo apc_fetch('APC TEST'); //-- it work with this code
如果我访问test.php,我想要Apc cache test.php。
是否有配置make APC无法缓存文件类型或是共享主机的限制?。
答案 0 :(得分:25)
回应你的评论“Apc已启用,apc.cache_by_default = 1; php设置CGI,我检查了phpinfo();”:这就是问题所在。如果在CGI上运行PHP,则会在每个页面加载时创建一个新的PHP进程。由于APC绑定到PHP进程,因此它也会在每次页面访问时重新实例化。所以它显然没有任何数据。您的用户缓存示例仅起作用,因为您在单个页面加载时存储和获取变量。
所以:APC 不能使用PHP而不是CGI。使用FastCGI(使进程保持活动状态,从而使Cache工作并且通常更快)。
答案 1 :(得分:0)
如果您的主机是在fastcgi模式下使用php设置的,则APC可能无效。你能用标准的phpinfo()页面查看吗? 编辑:我纠正了,所选择的答案是正确的。我混淆了CGI / fastcgi。是的CGI不会工作。但是我想要指出,即使fastcgi在操作码缓存方面也不是很好。
答案 2 :(得分:0)