PHP - Duda sobre rapidez en 2 tipos de accesos PHP

 
Vista:

Duda sobre rapidez en 2 tipos de accesos PHP

Publicado por ZoItrix (6 intervenciones) el 25/08/2005 11:11:15
Buenas, tengo una duda, es la siguiente:



Supongamos que tengo una pagina "uno.php" y otra pagina llamada "funciones.php". Imaginemos que la pagina "uno.php" usa una estructura en forma de "ifs", es decir, constaria de muchisimos formularios y gestionaria todos los formularios. Me explico, seria algo asi:

if(SE HA DADO AL FORM1)
{

//Muchas sentencias escritas

}

if(SE HA DADO AL FORM2)

{

//Muchas sentencias escritas

}

Etc. El problema es que la página "uno.php" es demasiado extensa y mi intencion es meter todas las sentencias de cada "if" en la página "funciones.php" reduciendose bastante el tamaño de la pagina "uno.php" ademas de tenerlo todo mejor organizado.

Entonces digamos que tenemos dos casos:
CASO A: Tener todo incluido en la pagina "uno.php".

CASO B: Tener dos paginas, "uno.php" y "funciones.php".

Mi duda es la siguiente: ¿Qué sería mas rápido en cuanto a carga y procesamiento de datos?¿El caso A o el caso B? Cuando tengo muchos ifs seguidos, ¿Se cargan todos los ifs al cargar la página o solo el if al cual voy a acceder?. En el CASO B, al cargar la pagina "uno.php" y acceder a "funciones.php", dicha pagina ("funciones.php"), ¿Se cargaría entera?¿Solo se iria cargando la funcion que use?

Si la pagina "funciones.php" se carga entera y teniendo una unica pagina llena de ifs, solo se carga y procesa el "if" al que accedo, sería mas eficaz el CASO A a pesar de querer modularlo. Si por el contrario en "funciones.php" solo se cargara la funcion correspondiente, sin duda alguna pasaria a modular la pagina "uno.php".

¿Alguien sabe la respuesta?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda sobre rapidez en 2 tipos de accesos PHP

Publicado por Mike79 (669 intervenciones) el 25/08/2005 17:12:01
Cuando cargas funciones.php, se carga TODO dentro de funciones.php.
Lo que pasa es que php no maneja librerias como otros lenguajes, donde solo se cargaba la función que necesitabas. Aunque si puedes cargar librerias hechas en C en tiempo de ejecución.

Tu carga funciones.php sin miedo. La carga es del lado del servidor, no del cliente, si es lo que te preocupa. Aunque puedes hacer varias cosas para optimizar ese codigo:

1.- Puedes usar un Switch:
http://www.php.net/manual/es/control-structures.switch.php
en lugar de hacer todos los ifs.

2.- Puedes usar Ifs anidados, segun lo que explicaste, solo un form se dara al mismo tiempo, entonces podrias hacer:

if (Se ha dado form1) {
   ....
   Muchas instrucciónes
   ...
} elseif (Se ha dado form2) {
   ....
   Muchas instrucciónes
   ...
} elseif (Se ha dado form3) {
   ....
   etc...
   ...
}

Aunque no lo creas esto es mucho más rapido, ya que una vez que los ifs encuentran una condición, no siguen checando el resto de condiciones y una vez terminado el "Monton de Instrucciones" salen de todo el bloque de ifs, así que ya no preguntan por más ifs.

3.- Si realmente te interesa modularizarlo, puedes meter cada "Monton de instrucciones" de cada condicion, en un archivo aparte, y hacer algo asi:

if (Se ha dado form1) {
   include("cosasquehacerparaform1.php");
} elseif (Se ha dado form2) {
   include("cosasquehacerparaform2.php");
}

Obviamente lo mismo lo puedes hacer con Switch.

4.- Como ultimo consejo, si el codigo que estas insertando es html
entonces guardalo como html e incluyelo. Es mucho más rapido incluir un archivo con html que usar echo "codigodehtml", aunque esto solo aplica cuando son varias lineas seguidas de html, ya que estar entrando y saliendo del modo php consume recursos, no sirve un codigo donde cada 5 lineas haces un include a codigo html.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sobre rapidez en 2 tipos de accesos PHP

Publicado por ZoItrix (6 intervenciones) el 25/08/2005 17:33:44
Me has ayudado mucho. Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar