Estoy trabajando en una granja de servidores web de alto tráfico que sirve código PHP dinámico que incluye alrededor de 100 archivos en la mayoría de las solicitudes. La memoria caché del código de operación de APC está habilitada, include_once_override está habilitada y he asignado 64 MB de RAM a la memoria caché, sin embargo, cuando utilizo un proceso de Apache, todavía lo veo abierto() ing y stat() ing todo esto incluye para cada solicitud que debe ser sacado de la memoria caché Puedo ver en las estadísticas de caché que el caché está siendo poblado y utilizado con un 100% de hitrate. ¿Alguien puede ofrecer alguna idea?APC habilitado pero Apache sigue abriendo archivos?
Respuesta
Will, asegúrese de estar utilizando nombres completos para cada inclusión en su aplicación. Por la documentación APC:
apc.stat número entero
Tenga cuidado de cambiar esta configuración. Esto está predeterminado, obligando a APC a verificar (verificar) el script en cada solicitud para determinar si ha sido modificado. Si se ha modificado, volverá a compilar y almacenar en caché la nueva versión. Si esta configuración está desactivada, APC no comprobará, lo que generalmente significa que para obligar a APC a volver a verificar los archivos, el servidor web deberá reiniciarse o la memoria caché tendrá que borrarse manualmente. Tenga en cuenta que las configuraciones del servidor web FastCGI pueden no borrar la memoria caché al reiniciar. En un servidor de producción donde los archivos de script rara vez cambian, se puede lograr un impulso significativo en el rendimiento mediante estadísticas desactivadas.
Para archivos incluidos/requeridos, esta opción también se aplica, pero tenga en cuenta que para la ruta relativa incluye (cualquier ruta que no comience con/en Unix) APC debe verificar para identificar el archivo de manera única. Si utiliza la ruta absoluta, incluye que APC puede omitir la estadística y usar esa ruta absoluta como identificador único para el archivo.
Una buena regla de oro para PHP es definir una constante que contiene la ruta completa a su proyecto, así:
// Assumes __FILE__ is in the root of your project
define('PATH_PROJECT', realpath(dirname(__FILE__)));
continuación, utilizar su incluye de este modo:
include_once PATH_PROJECT . '/some/dir/file.php';
Por lo tanto, todavía tiene la conveniencia de las rutas relativas, pero realmente está utilizando rutas completas.
- 1. PHP: ¿APC habilitado, pero todavía no funciona?
- 2. APC en PHP 5.3.10/Apache 2.2.21
- 3. ¿Se reinicia correctamente Apache, se borra APC?
- 4. CORS habilitado en Apache, pero AJAX no funciona (Chrome dice que el origen no está permitido)
- 5. Por qué atribuir "deshabilitado" pero no "habilitado"
- 6. Apache mod_rewrite no está funcionando o no está habilitado
- 7. Problemas con APC en publicar
- 8. APC no almacena en caché los archivos, pero almacena en caché los datos del usuario
- 9. OpenMP - Easy Loop, pero sigue siendo infinito?
- 10. Excepción capturada pero el programa sigue ejecutándose
- 11. log_errors_max_len = 1024 en php.ini, pero el registro php sigue creciendo
- 12. PHP APC, educarme
- 13. cómo activar el mod_deflate está habilitado en apache?
- 14. APC no acelera PHP 5.4
- 15. Abriendo archivo desde Java
- 16. ¿Qué es la depuración interna de APC?
- 17. Optimizar APC almacenamiento en caché
- 18. elemento de menú está habilitado, pero todavía en gris
- 19. El GPS no está habilitado pero isProviderEnabled() está devolviendo verdadero
- 20. ¿Son APC y ionCube totalmente compatibles?
- 21. Apache POI excepción de archivos xlsx lectura
- 22. PostgreSQL: Suelta la base de datos pero DB sigue ahí
- 23. ViewStateMode Deshabilitado pero sigue obteniendo el elemento ViewState
- 24. APC y barniz
- 25. Apache ProxyPass - Excluir archivos Regex
- 26. Cómo evitar que Apache se cuelgue cuando la memoria caché PHP APC se llena por completo?
- 27. ¿Cómo hacer que funcione APC (PHP Cache)?
- 28. Desactivar o eliminar la APC
- 29. Instalar APC en Windows
- 30. NSMenuItem no está habilitado?
Will, ¿ha evaluado su servidor con o sin include_once_override? – hobodave
Gracias! Sí, hice referencia con y sin y no vi ninguna diferencia notable. Ahora estoy viendo mucho menos stat() después de implementar rutas absolutas, pero aún veo un acceso() para cada archivo que estoy incluyendo, incluso con apc.stat = 0. ¿Es esto normal? ¿Por qué hay que acceder a los archivos? – Will
¿Estás seguro de que no estás viendo solo la inclusión inicial del archivo? Qué versión estás usando? APC ha tenido problemas históricamente con include_once_override. Además, edite su pregunta de origen con respuestas, en lugar de usar las respuestas. – hobodave