2010-01-21 19 views
9

Si tuviera un gran número de funciones, sería mejor mantenerlas todas en un archivo grande o sería mejor separarlas en varios archivos de funciones relacionadas. Mejor me refiero a más eficiente tanto para el mantenimiento como para el servidor que procesa la solicitud.Eficiencia para incluir archivos de funciones (en PHP)

Por ejemplo, ahora mismo tengo todos mis archivos en un archivo llamado include.php. Pero sería más prudente tener un archivo incluido de includes como:

<?php 
include('/functions/user.php'); 
include('/functions/admin.php'); 
include('/functions/content.php'); 
include('/functions/nav.php'); 
include('/functions/database.php'); 
include('/functions/other_junk.php'); 
?> 

Respuesta

17

Definitivamente separarlos, por su mantenimiento. Dudo que el rendimiento sufra en absoluto, pero incluso si lo hace (solo un poquito), es mejor que escriba código legible y fácil de mantener.

+2

+1 para propagar la facilidad de mantenimiento y la legibilidad en php. – whiskeysierra

+0

-1, Tener todas las funciones en un archivo no significa que no se puede mantener, no se puede leer. Depende de ** cómo ** lo haces. De hecho, aún es muy posible ser imposible de mantener e ilegible incluso con múltiples inclusiones. – Pacerier

2

En términos de mantenibilidad, generalmente es mejor separar sus funciones en grupos relacionados. (como mostró anteriormente, user.php serían solo las funciones relacionadas con el usuario).

Solo debe tener un archivo que tenga todos los incluidos si sabe que necesitará todos los archivos incluidos cada vez que necesite incluir algún archivo. De lo contrario, se frustra el propósito de tener ese archivo 'catch-all'.

2

En mi experiencia, multiple includes y/or requires generalmente goping are set demasiado atrás si estás hablando de un par de docenas de archivos para bibliotecas de funciones. Especialmente si puede lograr llamar solo a la declaración de un archivo en particular una vez durante el ciclo de vida de una solicitud.

Donde comienza a mostrar éxitos de rendimiento es si ingresa en OOP o en una arquitectura de tipo de procedimiento/funcional altamente compleja donde puede haber cientos de clases/archivos diferentes. Pero, en general, en ese momento, con suerte habrá realizado algún tipo de mitigación mediante el almacenamiento en caché/compilación.

+0

En realidad, sentirá que puede ralentizar si no tiene un acelerador. Las lecturas de discos siguen siendo costosas. – Pacerier

3

Desea asegurarse de estar utilizando una memoria caché de PHP como XCache o APC. Tus archivos PHP deberían estar todos en la memoria y no deberías preocuparte por si incluyes golpear el disco.

Definitivamente me resultaría más fácil si rompiera las funciones/clases de mentalidad en sus propios archivos.

+4

XCache y APC, a menos que se configure específicamente de otra forma, verificarán la hora de modificación del archivo para determinar si deben procesar una nueva versión del archivo. Esto afecta bastante el rendimiento si hay una gran cantidad de inclusiones. En un servidor de producción donde el código está solucionado, realmente debería desactivarlo. Obtendrá un pequeño aumento en el rendimiento a costa de tener que vaciar el caché manualmente cuando cargue una nueva versión del código. – Mike

0

Tengo una lista de incluye en un archivo .config central.

Para todas las clases de OOP aunque utilizo autocarga -> Sé que es un poco más lento, pero ahorra tener que incluirlos cuando hago una nueva clase. Y solo se cargan según sea necesario.

Como un lado, include es más rápido que include_once ya que no tiene que comprobar si el archivo ya se ha incluido.

Cuestiones relacionadas