2010-04-07 16 views
5

¿Es más eficiente usar PHP include_once o require_once en lugar de usar un C-como include con un protector de encabezado?PHP incluir una vez

es decir,

include_once 'init.php'; 

frente

include 'init.php'; 

//contents of init.php 
if (!defined('MY_INIT_PHP')) { 
    define('MY_INIT_PHP', true); 
    ... 
} 

+5

¿Es esto un cuello de botella en el rendimiento de su código? –

Respuesta

9

"require_once" e "include_once" son generalmente un poco más lentos que simplemente "requieren" e "incluyen" porque realizan una comprobación si el archivo ya se ha cargado antes.

Pero la diferencia solo importa en aplicaciones realmente complejas en las que debe realizar la carga automática de todas formas y por eso no necesitaría require_once/include_once, si su autocargador está bien codificado.

En la mayoría de las aplicaciones simples, es mejor usar el require_once/include_once por razones de conveniencia.

El enfoque del protector de la cabecera es un código desordenado que debe evitarse. Solo imagine, si olvidó ese control en uno de muchos archivos. Depuración que podría ser una pesadilla.

Simplemente use la carga automática si su aplicación es adecuada para ello. Es rápido y la forma más conveniente y limpia.

+2

Y el '... defined ('MY_INIT_PHP') ...' tampoco tiene costo. Entonces, la pregunta de rendimiento se reduciría a "¿es usted la solución de php-script más rápida que la solución interna de php? ... y lo dudo para la gran mayoría de los casos. – VolkerK

+1

@ VolkerK Sí, eso se agrega, también. Cualquier solución escrita en código PHP interpretado es, por definición, más lenta que las implementaciones nativas de PHP. Al menos no puedo pensar en ningún caso diferente. – selfawaresoup

1

Se podía probarlo 10.000 veces con un temporizador, pero creo que define MY_INIT_PHP es infinitamente más rápido.

Para ser sincero, es probable que haya una diferencia tan pequeña que no haya necesidad práctica de preocuparse a menos que esté trabajando para sitios como Facebook.

0

Siempre uso REQUIRE_ONCE si el contenido del script es único.

+0

Casi siempre uso require_once ... por una razón diferente: require_once dará error fatal si el archivo falta, mientras que include_once solo da advertencia en este caso. De lo contrario, estos dos son equivalentes. – hongliang

2

Esperaría que include_once fuera más rápido que usar el protector de encabezado dentro del archivo incluido, ya que todavía necesita abrir y cargar el archivo en este último.

+0

Tienes razón. Debería haber preguntado si es más rápido que: if (! Defined ('MY_INIT_PHP')) {define ('MY_INIT_PHP', verdadero); include 'init.php';} – webbiedave

Cuestiones relacionadas