Para dar un contexto:¿Cómo funciona realmente el uso de la memoria Apache PHP?
Tuve una discusión con un colega recientemente sobre el uso de cargadores automáticos en PHP. Yo estaba discutiendo a favor de ellos, él en contra.
Mi punto de vista es que los autocargadores pueden ayudarlo a minimizar la dependencia manual de la fuente, lo que a su vez puede ayudarlo a reducir la cantidad de memoria consumida al incluir muchos archivos grandes que puede que no necesite.
Su respuesta fue que incluir archivos que no necesita no es un gran problema porque después de que se haya incluido un archivo, el proceso secundario de Apache lo mantendrá en la memoria y esta porción de memoria estará disponible para solicitudes posteriores. Sostiene que no debe preocuparse por la cantidad de archivos incluidos porque muy pronto se cargarán en la memoria y se usarán según demanda de la memoria. Por lo tanto, la memoria es un problema menor y la carga adicional de tratar de encontrar el archivo que necesita en el sistema de archivos es mucho más preocupante.
Es un tipo inteligente y tiende a saber de lo que está hablando. Sin embargo, siempre pensé que la memoria utilizada por Apache y PHP era específica para esa solicitud particular que se manejaba. A cada solicitud se le asigna una cantidad de memoria igual a la opción memory_limit PHP y cualquier compilación y procesamiento fuente solo es válido durante la vigencia de la solicitud.
Incluso con cachés de código de operación como APC, pensé que la solicitud individual aún tenía que cargar cada archivo en su propia porción de memoria y que APC es solo un atajo para tenerlo precompilado para el proceso de respuesta .
He estado buscando documentación sobre esto pero no he podido encontrar nada hasta el momento. Realmente agradecería que alguien me señale alguna documentación útil sobre este tema.
ACTUALIZACIÓN:
Solo para aclarar, la parte de discusión autocargador era más de un contexto :).
Puede que no haya sido claro pero mi pregunta principal es si Apache unirá sus recursos para responder a múltiples solicitudes (especialmente la memoria utilizada por los archivos incluidos), o si cada solicitud deberá recuperar el código requerido para satisfacer la ruta de ejecución aislada de otras solicitudes manejadas desde el mismo proceso.
e.g .: Los archivos 1, 2, 3 y 4 tienen un tamaño igual de 100 KB cada uno. Solicitud A incluye archivos 1, 2 y 3. Solicitud B incluye archivos 1, 2, 3 y 4.
En su mente que está pensando que Solicitar una consumirá 300 KB para la totalidad de ella es la ejecución y la Solicitud B sólo se consuma 100KB adicionales porque los archivos 1,2 y 3 ya están en la memoria.
En mi opinión son 300KB y 400KB porque ambos se procesan independientemente (si es por el mismo proceso).
Esto lo lleva de vuelta a su argumento de que "simplemente incluya el lote porque lo usará de todos modos", en lugar de "solo incluir lo que necesita para mantener el tamaño de la solicitud".
Esto es bastante fundamental para la forma en que me acerco a la construcción de un sitio web PHP, por lo que me gustaría saber si estoy fuera de lugar aquí.
Siempre he creído que la memoria del sitio web a gran escala es el recurso más valioso y más preocupante que el sistema de archivos comprueba si hay un autocargador que el kernel probablemente almacena en la memoria caché.
¡Está en lo cierto, es hora de hacer una evaluación comparativa!
Gracias Matthew, he hecho una edición de la publicación original en caso de que eso ayude, pero definitivamente haré algunas pruebas. – Sirhara
No estoy seguro de cómo mod_php maneja el servicio de la misma página, pero si utiliza un caché de código de operación, entonces los archivos PHP en sí mismos definitivamente estarán en la memoria compartida. La forma en que entiendo vainilla PHP, es que en cada solicitud el archivo se abre, analiza y ejecuta ... por lo que no estoy seguro de dónde se estaría produciendo el intercambio de memoria. Creo que todavía se reduce a la evaluación comparativa ... use algo como 'ab' para ejecutar pruebas. Estoy seguro de que verá que usar o no la aplicación automática depende de las preferencias personales ... No creo que el rendimiento sea significativamente diferente. – Matthew