2011-04-01 26 views
5

Apc no almacena en caché los archivos, solo almacena en caché los datos del usuario. Cuando probé en localhost, APC almacenó en caché todos los archivos que utilicé. Pero no funciona en mi hosting compartido. ¿Es esto un problema de configuración?APC no almacena en caché los archivos, pero almacena en caché los datos del usuario

Estas son las estadísticas de mi apc.php (APC 3.0.19): apc.php stats

En la imagen superior, APC no utiliza ningún tipo de memoria. Esto es lo que phpinfo() me da: phpinfo() output

en el servidor local, i único acceso http://localhost/test.php. Apc almacenará en caché localhost/test.php (type file) de inmediato. pero en el host compartido, no lo veo en el archivo de caché (puede almacenar en caché la variable, si guardo pero no con el archivo);

apc_add('APC TEST', '123'); 
    echo apc_fetch('APC TEST'); //-- it work with this code 

quiero Apc cache test.php si tengo acceso a test.php.

¿Hay una configuración que haga que APC no pueda almacenar en caché el tipo de archivo o que sea el límite de alojamiento compartido ?.

+0

SourceGuardian? http://stackoverflow.com/questions/7337859/apc-file-cache-not-working-but-user-cache-is-fine/7348937#7348937 –

Respuesta

25

En respuesta a su comentario "Apc está habilitado, y apc.cache_by_default = 1; configuración de PHP con CGI, he comprobado phpinfo();": Ese es el problema. Si ejecuta PHP sobre CGI, se crea un nuevo proceso PHP en cada carga de página. Como APC está vinculado al proceso de PHP, también se crea una nueva instancia en cada acceso de página. Entonces, obviamente, no tiene ningún dato. El ejemplo de caché de usuario solo funciona, porque almacena y recupera la variable en una sola carga de página.

Entonces: APC no puede trabajar con PHP sobre CGI. Use FastCGI (que mantiene vivos los procesos, haciendo que la caché funcione y, en general, sea más rápida).

+0

+1 para la descripción clara de la diferencia entre el proceso de desove de CGI y el modo FastCGI –

0

Si su hosting está configurado con php en modo fastcgi, es posible que APC no funcione. ¿Puedes verificar esto con una página phpinfo() estándar? editar: Estoy corregido, la respuesta elegida es correcta. Confundí CGI/fastcgi. Sí CGI no funcionará. Pero quiero señalar que incluso fastcgi no es tan bueno con el caché de código de operación.

+0

Compruebe también 'phpinfo' para el almacenamiento en caché si es disabled, re: [apc.cache_by_default = false] (http://www.php.net/manual/en/apc.configuration.php#ini.apc.cache-by-default) –

+0

Apc está habilitado, y apc. cache_by_default = 1; Configuración de php con CGI, revisé phpinfo(); – meotimdihia

0

APC en modo CGI en alojamiento compartido generalmente no es factible aunque puede ser posible. Dependiendo de su aplicación, también puede ser un riesgo de seguridad. Como dice nikic, deberías poder hacer que funcione con FastCGI, pero incluso eso no es fácil dependiendo de tu host. Aquí hay una cuenta detallada de alguien que lo hizo funcionar. Se le puede dar un poco de ayuda para tratar de conseguir que funcione en modo CGI

FastCGI with a PHP APC Opcode Cache

+0

De por sí, no hay absolutamente ningún problema para ejecutar php con una APC sobre fcgi. Lo hice en lighty y lo hago en nginx. El problema es que está en hosting compartido, por lo que probablemente no tenga tantas posibilidades para cambiar las configuraciones;) – NikiC

Cuestiones relacionadas