Pregunta

La pregunta puede hacer que algunas personas digan un SÍ o un NO definitivo casi de inmediato, pero siga leyendo...

Tengo un sitio web simple donde hay 30 páginas php (cada una tiene un código del lado del servidor php + HTML/CSS, etc.).Ninguna jerarquía complicada, nada.Sólo 30 páginas.

También tengo un conjunto de archivos php puramente back-end, los que tienen código para guardar cosas en la base de datos, realizar autenticación, enviar correos electrónicos, procesar pedidos y cosas por el estilo.Estos serán reutilizados por esas 30 páginas de contenido.

Tengo un archivo php maestro al que le envío un parámetro.Esto especifica cuál de esos 30 archivos es necesario e incluye la página de contenido apropiada.Pero cada uno de ellos puede requerir la inclusión de una cantidad variable de archivos de back-end.Por ejemplo, una página de contenido puede no requerir nada del back-end, mientras que otra puede necesitar el código de la base de datos, mientras que otra puede necesitar el correo electrónico, la base de datos y el código de autenticación, etc.

Supongo que cualquier página de fondo que se requiera se puede incluir en la página de contenido correspondiente, pero un pequeño cambio en la ruta y tengo que editar decenas de archivos.Será demasiado engorroso comprobarlo. cual Se solicita la página de contenido (tipo de caja de interruptor) e incluye los archivos de back-end apropiados, en el archivo php maestro.Nuevamente, tengo que hacer muchos cambios si cambia una sola ruta.

Por pereza, incluí TODOS los archivos de back-end en el archivo maestro para que ninguna página de contenido pueda solicitar algo que no esté incluido.

Primera pregunta: ¿es esta una buena práctica?si es que lo hace alguien.

En segundo lugar, ¿habrá algún problema de rendimiento o algún tipo de problema debido a que incluya todos los archivos de back-end, independientemente de si son necesarios?

EDITAR

El sitio web recibe entre 3000 y 4000 visitas al día.

¿Fue útil?

Solución

Se debería comparar. Tiempo de la ejecución de la misma página con diferente incluye. Pero supongo que no hará mucha diferencia con 30 archivos.

Pero usted puede ahorrarse el tiempo y sólo permitirá de APC en el php.ini (es una extensión PECL, por lo que necesita instalar se ). Puede cachear el contenido de los archivos analizada, lo que acelerará las cosas de manera significativa.

Por cierto: No hay nada malo con la pereza, es aún un virtud ;)

Otros consejos

Si su sitio está orientado a objetos Me gustaría recomendar el uso de auto-carga ( http://php.net/manual/en/language.oop5.autoload.php ).

Este sistema utiliza un método mágico (__autoload) para buscar una clase cuando sea necesario (es perezoso, al igual que usted!), Por lo que si una página en particular no necesita todas las clases, que no tiene que conseguirlos!

Una vez más, sin embargo, esto depende de si está orientado a objetos o no ...

se ralentizará su sitio, aunque probablemente no por una cantidad notable. No parece como una forma saludable de organizar su aplicación, sin embargo; Me repensarlo. Trate de separar la lógica de aplicación (por ejemplo. La mayor parte del código del lado del servidor) de la capa de presentación (por ejemplo. El HTML / CSS).

No es una mala práctica si los archivos son pequeños y solo contienen definiciones y configuraciones.si realmente ejecutan código, o es extremadamente grande, provocará un problema de rendimiento.ahora, si su sitio tiene 3 visitantes por hora, a quién le importa, si tiene 30000...Ese es otro problema y hay que trabajar más duro para minimizarlo.

Puede migitate algunas de las desventajas de código PHP-compilar utilizando XCache . Este módulo PHP caché el PHP-código de operación que reduce el tiempo de compilación y el rendimiento.

Teniendo en cuenta el tamaño de su sitio web; Si usted no ha notado una desaceleración, ¿por qué tratar de solucionarlo?

Cuando se trata de los sitios más grandes, lo primero que debe hacer es instalar APC. A pesar de que el método actual de incluir archivos podría no beneficiarse tanto de APC como pudo, APC todavía hará una materia de exceso de velocidad trabajo increíble para arriba.

Si la respuesta velocidad sigue siendo problemática, se debe considerar la inclusión de todos sus archivos. APC mantendrá una versión en caché de sus sourcefiles en la memoria, pero sólo puede hacerlo así si hay no condicional incluye .

Sólo cuando su aplicación PHP se encuentra en un tamaño en el agotamiento de la memoria es un gran riesgo (Tenga en cuenta que para la mayoría de los sitios web a gran escala de memoria no es el cuello de botella) es posible que desee incluir condicionalmente partes de su aplicación.

Rasmus Lerdorf (el hombre detrás de PHP) está de acuerdo: http://pooteeweet.org/blog/538

Como otros han dicho, no debe retardar cosas abajo de mucho, pero no es 'ideal'.

Si el problema principal es que eres demasiado perezoso para ir cambiando las rutas de acceso para todos los archivos incluidos (si la ruta nunca necesita ser actualizado en el futuro). A continuación, puede utilizar una constante para definir la ruta en el archivo principal, y el uso de la constante cada vez que necesite para incluir / requieren un archivo.

define('PATH_TO_FILES', '/var/www/html/mysite/includes/go/in/here/');

require_once PATH_TO_FILES.'database.php';
require_once PATH_TO_FILES.'sessions.php';
require_once PATH_TO_FILES.'otherstuff.php';

De esta forma si los cambios de ruta, sólo se necesita modificar una línea de código.

lo vivo en la "incluyen lo menos posible, tanto como sea necesario", así que por lo general sólo incluyo mi configuración y manejo de sesión para todo y entonces cada página incluye justo lo que necesitan el uso de un include ruta definida en la configuración incluir, por lo para los cambios de ruta que sigue sólo tiene que cambiar un archivo.

Si se incluye todo lo que la desaceleración no será visible hasta que se obtiene una gran cantidad de visitas a la página (varios golpes por segundo) por lo que en su caso simplemente incluyendo todo, podría estar bien.

De hecho, se ralentizará su sitio web. La mayor parte debido a la lentitud de carga relativa y el procesamiento de PHP. El código más desea incluir, más lenta será la aplicación obtendrá.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top