如何在APC操作码缓存中使用apc.filters参数来不缓存某些路径?例如,我希望缓存对路径下的任何内容都是活动的:
“/var/www/vhost”
并排除类似的路径
"/usr/share/psa-horde/“
我试着用
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/vhost/*”(注意通配符)吗?恐怕这是不可能的,因为过滤器的工作方式:
注意,用于匹配的文件名是传递给包含/要求的文件名,而不是绝对路径。
有什么想法或样例配置吗?
发布于 2009-10-26 23:11:58
过滤器应该是一个逗号分隔的POSIX扩展正则表达式列表。我相信你在第二次尝试中得到的只是与路径/usr/share/psa-horde/完全匹配的,而不是/usr/share/psa-horde/ the或/usr/share/psa-horde/antherfile.php。
以下内容应与子文件夹中的任何内容匹配
apc.filters = "-/usr/share/psa-horde/.*"发布于 2010-09-22 23:28:27
一个很晚的反应,但万一别人有这个问题(我猜你可能在运行一个Plesk盒,这就是我遇到这个问题的原因)。
您最好的选择是在加载的php模块列表中包含APC,但在主php.ini中有APC。然后,对于希望启用它的每个vhost,为每个vhost添加php_admin_value apc.enabled 1。如果你有很多网站,但只为少数几个网站工作,这可能是个问题。
发布于 2013-08-28 16:34:15
如果您有不同的vhost,pnomolos的解决方案就能工作,但是如果您只有一个并且希望在每个目录的基础上控制缓存,它就不能工作。
这个bug报告指向了最好的解决方案:https://bugs.php.net/bug.php?id=57064
在apc.cache_by_default中启用APC并将其设置为0。在Apache中,您可以在php_admin_setting apc.cache_by_default 1块中使用Directory,以便在需要它的地方启用APC缓存。
https://stackoverflow.com/questions/1626262
复制相似问题