2009-10-26 7 views
7

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

"/ Var/WWW/ВХосты"

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

"/ USR/доли/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

Если фильтр будет что-то больше похоже на "+/вар/WWW/ВХосты/*" (обратите внимание на групповой символ)? Я боюсь, что это не представляется возможным из-за способа фильтров работы:

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

Любые идеи или типовые конфигурации?

ответ

6

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

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

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

Хм, хороший вызов, но я думаю, что это работает только для имени файла, если полный путь был использован в требуют утверждения: «Обратите внимание, что имя файла используется для сопоставления является один сданный включить/потребовать, а не абсолютный путь ». – typeoneerror

+0

, например. try "-/var/www/vhosts/myhostname.com/svn/public/openx /.*", и файлы в этом каталоге все еще кэшируются. – typeoneerror

+0

«Обратите внимание, что имя файла, используемое для сопоставления, - это тот, который передан include/require, а не абсолютный путь». - from docs – livelygreen

5

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

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

0

Поскольку apc.filters работает с регулярными выражениями, общий путь должен быть указан как apc.filters = «-/USR/доли/ВАБ-орда /.*» решение

2

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

Использована

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

 Смежные вопросы

  • Нет связанных вопросов^_^