APC不缓存文件,但缓存用户数据

时间:2011-04-01 06:39:31

标签: php linux apc

Apc不缓存文件,只缓存用户数据。当我在localhost上测试时,APC缓存了我使用的所有文件。但它不适用于我的共享主机。这是配置问题吗?

这些是我的apc.php(APC 3.0.19)的统计数据: apc.php stats

在上图中,APC不使用任何内存。 这就是phpinfo()给我的: phpinfo() output

在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无法缓存文件类型或是共享主机的限制?。

3 个答案:

答案 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)

虽然有可能,APC在共享主机上的CGI模式下通常是不可行的。根据您的应用程序,它可能也存在安全风险。正如nikic所说,你应该能够使用FastCGI,但即使根据你的主机也不容易。这是一个让它运作的人的详细说明。它可能会给你一些帮助,试图让它在CGI模式下工作

FastCGI with a PHP APC Opcode Cache