apc.filters по пути? - PullRequest
       37

apc.filters по пути?

7 голосов
/ 26 октября 2009

Как бы я использовал параметр apc.filters в кэшировании кода операции APC, чтобы не кэшировать определенные пути? Например, я хочу, чтобы кэширование было активным для чего-либо по пути:

"/ Var / WWW / виртуальных доменов"

и исключить пути, такие как

"/ USR / доли / ВАБ-орда /"

Я пытался использовать

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 ]

6 голосов
/ 27 октября 2009

Фильтр должен представлять собой список разделенных запятыми расширенных регулярных выражений POSIX. Я считаю, что то, что вы имеете во второй попытке, соответствует только точному пути / usr / share / psa-horde /, а не / usr / share / psa-horde / что-то или /usr/share/psa-horde/anotherfile.php

Следующие элементы должны соответствовать чему-либо в подпапке

apc.filters = "-/usr/share/psa-horde/.*"
5 голосов
/ 23 сентября 2010

Очень поздний ответ, но на тот случай, если у кого-то еще возникла эта проблема (я собираюсь догадаться, что вы, возможно, работали с Plesk, поэтому я столкнулся с этим).

Лучше всего иметь APC в списке загруженных модулей php, но иметь apc.enabled 0 в мастере php.ini. Затем для каждого vhost, для которого вы хотите включить его, добавьте php_admin_value apc.enabled 1, чтобы включить его для каждого. Может быть проблемой, если у вас есть тонна сайтов, но работает только для нескольких.

2 голосов
/ 28 августа 2013

Решение pnomolos 'работает, если у вас разные vhosts, но оно не будет работать, если у вас есть только один и вы хотите контролировать кеширование по-настоящему для каждого каталога.

Этот отчет об ошибке указывает на лучшее решение: 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 именно там, где вам нужно.

0 голосов
/ 09 сентября 2013

Используется:

apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"
0 голосов
/ 13 декабря 2011

Поскольку apc.filters работает с регулярными выражениями, подстановочный путь должен быть указан как apc.filters = "- / usr / share / psa-horde /.*"

...