摘要:我安装了PHP(5.3.8)作为Apache模块,并通过PECL安装了APC。用户缓存工作正常,但文件缓存不起作用(我确实将apc.cache_by_default设置为1,这不是问题)
详情: 我刚刚获得了一个VPS(使用cPanel / WHM)来测试我使用apc文件缓存和用户缓存在我的应用程序中可以获得的收益。
所以我将PHP 5.3编译为DSO(apache模块)。
然后通过PECL通过SSH安装APC。 (首先我尝试使用WHM模块安装程序,它也遇到了同样的问题,所以我通过ssh尝试了它)
一切似乎都很好,phpinfo显示apc已加载并启用。
然后我检查了apc.php。一切似乎都好。
但是当我开始测试我的php应用程序时,apc中的文件缓存信息状态为:
Cached Files 0 ( 0.0 Bytes)
Hits 1
Misses 0
Request Rate (hits, misses) 0.00 cache requests/second
Hit Rate 0.00 cache requests/second
Miss Rate 0.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
这意味着没有缓存PHP文件,即使我浏览过10多个包含多个包含的PHP文件。所以一定有一些缓存文件。
但是用户缓存运行正常。
User Cache Information
Cached Variables 0 ( 0.0 Bytes)
Hits 1000
Misses 1000
Request Rate (hits, misses) 0.84 cache requests/second
Hit Rate 0.42 cache requests/second
Miss Rate 0.42 cache requests/second
Insert Rate 0.84 cache requests/second
Cache full count 0
上述用户缓存输出来自APC缓存测试脚本,该脚本尝试检索并存储1000个条目并给我时间。一种简单的基准。
任何人都可以帮助我。
即使apc.cache_by_default = 1,也没有缓存php文件。
这是我的apc配置
Runtime Settings
apc.cache_by_default 1
apc.canonicalize 1
apc.coredump_unmap 0
apc.enable_cli 0
apc.enabled 1
apc.file_md5 0
apc.file_update_protection 2
apc.filters
apc.gc_ttl 3600
apc.include_once_override 0
apc.lazy_classes 0
apc.lazy_functions 0
apc.max_file_size 1M
apc.mmap_file_mask
apc.num_files_hint 1000
apc.preload_path
apc.report_autofilter 0
apc.rfc1867 0
apc.rfc1867_freq 0
apc.rfc1867_name APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_
apc.rfc1867_ttl 3600
apc.serializer default
apc.shm_segments 1
apc.shm_size 32M
apc.slam_defense 1
apc.stat 1
apc.stat_ctime 0
apc.ttl 0
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 0
apc.write_lock 1
大多数php文件也不到20KB,因此,apc.max_file_size = 1M不是原因。
我尝试过没有运气的事情。
任何人都有任何线索。
注意:我在serverfault.com上发布了这个问题,但没有得到太多的观点或答案所以我在这里发帖(因为stackoverflow似乎更活跃,我只有1一个月来测试我的VPS并查看它是否对共享有任何用处
答案 0 :(得分:2)
似乎问题出在SourceGuardian上 从php.ini中注释掉extension =“ixed.5.3.lin”后,文件缓存现在正常工作。
我的托管服务提供商的支持人员发现了这一点,所以赞不绝口。我好几天都没有找到这个问题。
思想应该发布答案以防其他人绊倒这个问题。