2009-10-26 5 views
7

¿Cómo usaría el parámetro apc.filters en el almacenamiento en caché del código de operación de APC para no almacenar en caché ciertas rutas? Por ejemplo, quiero que el almacenamiento en caché de ser activo para cualquier cosa en la ruta:apc.filters por ruta?

"/ var/www/vhosts"

y excluye caminos como

"/ usr/share/psa-horda /"

he intentado utilizar

apc.cache_by_default = 0 
apc.filters = "+/var/www/vhosts" 

y

apc.cache_by_default = 1 
apc.filters = "-/usr/share/psa-horde/" 

Pero ninguno funcionó como esperaba.

http://www.php.net/manual/en/apc.configuration.php#ini.apc.filters

caso de que el filtro sea algo más parecido a "+/var/www/vhosts/*" (nótese el comodín)? Me temo que esto no es posible debido a la forma en que funciona filtros:

Tenga en cuenta que el nombre del archivo utilizado para juego es el que pasó a incluir /requerir, no la ruta absoluta .

¿Alguna idea o configuraciones de muestra?

Respuesta

6

El filtro debe ser una lista separada por comas de las expresiones regulares extendidas de POSIX. Creo que lo que tienes en el segundo intento solo coincide con la ruta exacta/usr/share/psa-horde /, y no/usr/share/psa-horde/something o /usr/share/psa-horde/anotherfile.php

el siguiente debe coincidir con cualquier cosa en la subcarpeta

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

Hmm, buena llamada, pero creo que sólo funciona para el nombre del archivo si se utiliza la ruta completa en el estado requerirá: "Tenga en cuenta que el nombre del archivo utilizado para la coincidencia es el pasado para incluir/requerir, no el camino absoluto ". – typeoneerror

+0

p. Ej. intentado "-/var/www/vhosts/myhostname.com/svn/public/openx /.*" y los archivos en este directorio todavía se están almacenando en caché. – typeoneerror

+0

"Tenga en cuenta que el nombre de archivo utilizado para la coincidencia es el que se pasa para incluir/requerir, no la ruta absoluta". - de docs – livelygreen

5

una respuesta muy tarde, pero por si acaso alguien está teniendo este problema (que voy a adivinar que puede ser/ha estado ejecutando un Plesk caja, por lo que me encontré con esto).

Su mejor opción es tener APC en la lista de módulos de php cargados, pero tiene apc.enabled 0 en el master php.ini. Luego, para cada vhost que desee tener habilitado, agregue php_admin_value apc.enabled 1 para habilitar cada uno. Podría ser un problema si tienes un montón de sitios, pero funciona solo para unos pocos.

0

Desde apc.filters trabaja con expresiones regulares, ruta de acceso comodín debe especificarse como apc.filters = "-/usr/share/psa-horda /.*" solución

2

pnomolos' funciona si usted tiene diferentes vhosts, pero no funcionará si solo tiene uno y desea controlar el almacenamiento en caché de forma verdaderamente por directorio.

Este informe de errores puntos a la mejor la solución: https://bugs.php.net/bug.php?id=57064

Habilitar APC y establecer apc.cache_by_default-0 en php.ini. En su configuración de Apache, puede usar php_admin_setting apc.cache_by_default 1 dentro de un bloque Directory para habilitar el almacenamiento en caché de APC exactamente donde lo necesita.

0

ocasión:

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