Ver Mensaje Individual
  #16 (permalink)  
Antiguo 11/07/2014, 05:37
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Menus de ilimitados subniveles

Cita:
Iniciado por NSD Ver Mensaje
Notece que consume tanta memoria como elementos halla en el menu, por lo que si bien, en teoria el algoritmo funciona con una cantidad ilimitada de elementos, en la practica solo funciona con tantos como entren en la memoria del servidor en simultaneo.
Supongamos que queremos evitar eso.Tenemos un menu con M filas, y no queremos tenerlas todas en memoria.
La unica forma de hacer eso, es generar la salida del menu a la vez que se procesan las filas.Es decir, se lee 1 fila de la query, e inmediatamente se hace echo del html correspondiente a esa entrada de menu.
Si se hace:
- 1) concatenaciones del html en una funcion: estás consumiendo *más* memoria que la necesaria para las rows de la query (hay que sumar todo el markup html).
- 2) Envío a algún sistema de plantillas para separar el dibujo del menú, de la obtenición de los datos : te fuerza a meter todas las filas en un array, con lo cual, estas usando la misma cantidad de memoria.

Es decir, el consumo de memoria debido a tener todas las opciones de menu en memoria, no viene sólo porque se haga una query que obtenga todas las filas a la vez.Puede venir porque se concatene en una variable que tiene todo el menu a la vez.O porque se guarden sub-menus parciales en un mismo array.
Los dos casos que he puesto, son muy comunes, y no hay que dar la impresión de que si haces queries parciales, no consumes tanta memoria como entradas del menú.Puedes estar usando la misma, o incluso más.