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/.*"