БТР.фильтры по пути?

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

"/var / www / vhosts"

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

" / usr / share/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 ответов


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

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

apc.filters = "-/usr/share/psa-horde/.*"

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

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


решение 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 именно там, где вам это нужно.


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


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

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