apc.filters的路径?(apc.filters by path?)

2019-09-01 07:52发布

我将如何使用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 /需要,而不是绝对路径。

任何意见或样品配置?

Answer 1:

过滤器应该是POSIX的一个逗号分隔的列表扩展正则表达式。 我相信你在第二次尝试只什么确切的路径在/ usr /共享/ PSA-部落/,而不是在/ usr /共享/ PSA-部落/某事或/usr/share/psa-horde/anotherfile.php匹配

以下应在子文件夹中任何相匹配

apc.filters = "-/usr/share/psa-horde/.*"


Answer 2:

一个很迟了回应,但以防万一别人是有这个问题(我会想你可能是/已经运行的Plesk盒子,这就是为什么我碰到这个来)。

最好的办法是让APC在已经加载的PHP模块列表,但apc.enabled 0在主php.ini中。 然后,对于每个虚拟主机,你想拥有它的启用,加上php_admin_value apc.enabled 1 ,使每个。 可能是一个问题,如果你有大量的网站,但适用于只是少数。



Answer 3:

pnomolos'解决方案的工作,如果你有不同的虚拟主机,但如果你只有一次生命,要控制在一个真正的每个目录缓存将无法正常工作。

这个bug报告指出,以最佳的解决方案: https://bugs.php.net/bug.php?id=57064

启用APC并设置apc.cache_by_default0php.ini 。 在你的Apache配置,你就可以使用php_admin_setting apc.cache_by_default 1一个内部Directory块,使APC缓存正是你需要它。



Answer 4:

由于apc.filters工作正则表达式,通配符路径应被指定为apc.filters =“ - 在/ usr /共享/ PSA-部落/.*”



Answer 5:

用过的:

apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"


文章来源: apc.filters by path?