如何在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 / *”(注意通配符)吗?由于过滤器的工作方式,我担心这是不可能的:
请注意用于的文件名 匹配是传递给的 包括/要求,而不是绝对 路径。
任何想法或样本配置?
答案 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/"