我将如何使用APC指令缓存的apc.filters参数不缓存某些路径? 例如,我想缓存为路径下的任何被激活:
“在/ var / WWW /虚拟主机”
并排除类似路径
“在/ usr /共享/ PSA-部落/”
我试着使用
apc.cache_by_default = 0
apc.filters = "+/var/www/vhosts"
和
apc.cache_by_default = 1
apc.filters = "-/usr/share/psa-horde/"
但既不工作如我所料。
http://www.php.net/manual/en/apc.configuration.php#ini.apc.filters
如果过滤器更多的东西,如“+ /无功/网络/虚拟主机/ *”(注意通配符)? 我很害怕,因为路上的过滤器的工作原理,这是不可能的:
需要注意的是,用于匹配文件名是传递给include /需要,而不是绝对路径。
任何意见或样品配置?
过滤器应该是POSIX的一个逗号分隔的列表扩展正则表达式。 我相信你在第二次尝试只什么确切的路径在/ usr /共享/ PSA-部落/,而不是在/ usr /共享/ PSA-部落/某事或/usr/share/psa-horde/anotherfile.php匹配
以下应在子文件夹中任何相匹配
apc.filters = "-/usr/share/psa-horde/.*"
一个很迟了回应,但以防万一别人是有这个问题(我会想你可能是/已经运行的Plesk盒子,这就是为什么我碰到这个来)。
最好的办法是让APC在已经加载的PHP模块列表,但apc.enabled 0
在主php.ini中。 然后,对于每个虚拟主机,你想拥有它的启用,加上php_admin_value apc.enabled 1
,使每个。 可能是一个问题,如果你有大量的网站,但适用于只是少数。
pnomolos'解决方案的工作,如果你有不同的虚拟主机,但如果你只有一次生命,要控制在一个真正的每个目录缓存将无法正常工作。
这个bug报告指出,以最佳的解决方案: https://bugs.php.net/bug.php?id=57064
启用APC并设置apc.cache_by_default
到0
在php.ini
。 在你的Apache配置,你就可以使用php_admin_setting apc.cache_by_default 1
一个内部Directory
块,使APC缓存正是你需要它。
由于apc.filters工作正则表达式,通配符路径应被指定为apc.filters =“ - 在/ usr /共享/ PSA-部落/.*”
用过的:
apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"