【问题标题】:PHP APC exclude folder from cachingPHP APC 从缓存中排除文件夹
【发布时间】:2014-04-30 18:36:24
【问题描述】:

我想排除一个文件夹用于使用 apc 进行缓存。作为 apc-filter 我正在使用...

apc.cache_by_default=1
apc.filters="-/var/www/mysite/httpdocs/phpmyadmin/.*"

我现在的问题是,我的过滤器不能递归工作。 APC 仍在缓存 phpmyadmin 的子文件夹。有什么想法可以递归使用我的过滤器吗?

【问题讨论】:

  • 应该可以。您没有做任何奇怪的事情,例如拥有指向该目录的符号链接?呃,你重启了php-fpm,而不是nginx吧?
  • 是的,在我对 apc.ini 进行更改后,我每次都重新启动 php-fpm
  • 它显示在您的 phpinfo 输出中,并带有正确的 apc.filters 条目?
  • 是的。 php.ini 是正确的。我的问题只是,它不能递归工作。第一级文件(phpmyadmin-root 文件夹中的 php 文件,如 index.php o config.inc.php)被排除在外。但不是子文件夹中的文件。
  • 你试过 matchall 正则表达式 "-.*phpmyadmin.*" 吗?

标签: php caching apc


【解决方案1】:

要解决此问题,您需要做两件事

  1. 更改您的虚拟主机以禁用 phpmyadmin 的 APC:
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
      AllowOverride All
      Options FollowSymlinks
      Order allow,deny
      Allow from all
      php_admin_value open_basedir "/srv/:/tmp/:/usr/share/:/etc/webapps:/usr/share/pear/"
      php_admin_value apc.enabled 0
</Directory>
  1. 为所有 phpmyadmin 页面添加过滤器:

apc.filter="-/usr/share/phpmyadmin/.*"

【讨论】:

    【解决方案2】:

    它应该只是工作。由于符号路径或文件的包含方式有些奇怪,它可能没有被拾取。

    无论哪种方式,您都可以匹配文件名中包含 phpmyadmin 的任何内容,例如:

    apc.filters = "-.*phpmyadmin.*"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多