Apc 不缓存文件,它只缓存用户数据。当我在本地主机上测试时,APC 缓存了我使用的所有文件。但它不适用于我的共享主机。这是配置问题吗?
这些是来 self 的 apc.php (APC 3.0.19) 的统计数据:
在上图中,APC 没有使用任何内存。 这是 phpinfo() 给我的:
在本地主机上,我只访问 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 缓存 test.php。
是否有配置使 APC 无法缓存文件类型或它是共享主机的限制?
最佳答案
针对您的评论“Apc 已启用,并且 apc.cache_by_default = 1;使用 CGI 设置 php,我检查了 phpinfo();”:这就是问题所在。如果您在 CGI 上运行 PHP,则在每次加载页面时都会创建一个新的 PHP 进程。由于 APC 绑定(bind)到 PHP 进程,它也会在每次访问页面时重新实例化。所以它显然没有任何数据。您的用户缓存示例仅适用,因为您在单个页面加载时存储和获取变量。
因此:APC 不能通过 CGI 使用 PHP。使用 FastCGI(它使进程保持事件状态,从而使缓存工作并且通常速度更快)。
关于php - APC不缓存文件,但缓存用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509962/