apc.filters by path?

时间:2009-10-26 17:50:43

标签: php apc opcode-cache

如何在APC操作码缓存中使用apc.filters参数来缓存某些路径?例如,我希望缓存对于路径下的任何内容都是活动的:

“/无功/网络/虚拟主机”

并排除

之类的路径

“的/ 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

过滤器应该更像“+ / var / www / vhosts / *”(注意通配符)吗?由于过滤器的工作方式,我担心这是不可能的:

  

请注意用于的文件名   匹配是传递给的   包括/要求,而不是绝对   路径。

任何想法或样本配置?

5 个答案:

答案 0 :(得分:6)

过滤器应该是逗号分隔的POSIX扩展正则表达式列表。我相信你在第二次尝试中所拥有的只匹配确切路径/ usr / share / psa-horde /,而不是/ usr / share / psa-horde / something或/usr/share/psa-horde/anotherfile.php < / p>

以下内容应匹配子文件夹

中的任何内容
apc.filters = "-/usr/share/psa-horde/.*"

答案 1 :(得分:5)

一个非常晚的回复,但以防其他人有这个问题(我猜你可能已经/正在运行Plesk盒子,这就是为什么我遇到这个)。

你最好的选择是在加载的php模块列表中安装APC,但有 主php.ini中的apc.enabled 0。然后,对于要为其启用的每个vhost,添加php_admin_value apc.enabled 1以启用每个vhost。如果您有大量网站可能会成为一个问题,但仅适用于少数网站。

答案 2 :(得分:2)

如果您有不同的虚拟主机,那么

pnomolos'解决方案是有效的,但如果您只有一个并且希望在真正的每个目录的基础上控制缓存,那么它将无法工作。

此错误报告指出了最佳解决方案: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缓存。

答案 3 :(得分:0)

由于apc.filters适用于正则表达式,因此应将通配符路径指定为 apc.filters =“ - / usr / share / psa-horde /.*"

答案 4 :(得分:0)

用于:

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