apc.filters по пути?

Как бы я использовал параметр 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

Должен ли фильтр быть похож на "+/var/www/vhosts/*" (обратите внимание на подстановочный знак)? Боюсь, это невозможно из-за работы фильтров:

Обратите внимание, что для сопоставления используется имя файла, которое передается для включения / require, а не абсолютный путь.

Есть идеи или примеры конфигураций?

5 ответов

Решение

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

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

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

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

Лучше всего иметь APC в списке загруженных модулей php, но иметьapc.enabled 0 в мастер php.ini. Затем для каждого хоста, для которого вы хотите включить его, добавьте 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="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"

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

Другие вопросы по тегам