2012-05-27 22 views
8

Duplicar posible:
Efficiency for including files of functions (in PHP)
Using too much include() in php¿Incluir demasiados archivos en PHP reduce el rendimiento?

Si es así, ¿cuál sería la cantidad recomendada de archivos para incluir como máximo?

+3

La inclusión de un millón de archivos degradará el rendimiento. La pregunta que debe hacerse es dónde está el punto de corte: cargar algunos archivos "grandes" con muchos códigos que no se usarán, o muchos archivos más pequeños donde se usará el código. La única forma de saber es ejecutar puntos de referencia en su configuración particular. No hay una regla que diga que el corte está en "X líneas de código en archivos Y". –

+0

Esta es una pregunta de cómo-largo-es-una-pieza-de-cadena, ya que depende de cuántos usuarios tiene, la carga en sus servidores actuales, cuál es su configuración de servidor web, si tiene un acelerador de PHP (etc.) Mi punto de vista es construir su proyecto con tantos o tan pocos como quiera, y luego preocuparse por la optimización cuando realmente tiene que hacerlo. (Dicho esto, mis proyectos de Symfony incluirán probablemente 50-100 archivos durante cada solicitud, por lo que puede tener bastantes y seguir teniendo un buen rendimiento, si su servidor está configurado adecuadamente). – halfer

+0

@MarcB, Miles degradarán el rendimiento, no necesitan llegar a casi un millón. – Pacerier

Respuesta

0

La directiva "pega" el contenido del archivo incluido en el mismo lugar donde se encuentra. Entonces, el código incluido se suma al guión real. Aquí hay una buena explicación PHP include(): File size & performance - la respuesta aceptada.

17

Incluyendo un archivo va a hacer las siguientes cosas:

  • leer el archivo desde el disco.
  • Ejecute el código en el archivo.

Ambas operaciones llevan tiempo. No mucho tiempo, pero aun así puede sumar si tiene muchas inclusiones, por lo que la respuesta básica a su pregunta es 'sí, puede afectar el rendimiento'.

Sin embargo, el tamaño de ese golpe de rendimiento es bastante pequeño, y está ampliamente compensado por las ventajas de escribir código bien estructurado y bien estructurado (que incluye mantener clases/funcionalidades separadas en archivos separados).

A decir verdad, si le preocupa el rendimiento de este tipo de cosas, intente ejecutar su código a través de un generador de perfiles como xDebug. Esto le mostrará exactamente qué partes de su código toman la mayor cantidad de tiempo. include() declaraciones aparecerán allí, pero es muy poco probable que estén en algún lugar cerca de la parte superior de la lista.

A menos que esté escribiendo un sitio con números de visitantes como Facebook, entonces es poco probable que deba preocuparse por el rendimiento de include(). Pero eche un vistazo a la salida del generador de perfiles de xDebug, porque es probable que existan otras cosas en su código que vayan mucho más despacio de lo que esperaba o que se llamen con frecuencia, o que se repitan demasiadas veces, etc., y solucionando estas tendrá un gran impacto en el rendimiento de su código.

+0

¿Llamas a "leer el archivo del disco" no mucho tiempo? Entonces, ¿por qué los aceleradores alcanzan una velocidad x10? – Pacerier

+2

@Pacerier - ¿De qué aceleradores te refieres?Si se refiere a cosas como Opcache y APC, entonces hacen mucho más que guardar en caché las cargas de archivos; también almacenan en caché el paso de compilación, que es de donde proviene el real impulso de rendimiento. Si realmente quieres ver qué tipo de impulso de perfomance se obtiene al reducir las inclusiones, mira el mecanismo de Phar: los archivos de Phar son paquetes de PHP; efectivamente todos los archivos de un programa combinados en un solo archivo para facilitar la distribución. Hay un beneficio de perf, pero no tanto; se realiza principalmente para facilitar la distribución. – Spudley

Cuestiones relacionadas