PHP - consulta generacion de tablas.

   
Vista:

consulta generacion de tablas.

Publicado por franco (3 intervenciones) el 07/02/2018 03:18:07
Hola a todos!
Esta es mi primer pregunta en el foro, ojala puedan ayudarme.
Estoy cargando una pagina donde leo 8000 productos y me faltan leer mas de 20000 desde la base mysql y los mando a renderizar a un template con TWIG, el tema es que tarda mucho, de 7 a 10 segundos generar el html con todos los registros, crea unas tablas que tambien generan links y botones para cada registro.
Como puedo optimizar esto?
Cambie a php 7 y le di mas recursos a php y mejoro un poco (utilizo wamp).
Saque algunos de los botones para que genere mas rapido el html.
Aclaracion: traigo todos los registros porque hago un paginado con www.datatables.net ya que utilizo su buscador y filtro. Deshabilite el paginado automatico y tarda mucho igual, evidentemente el problema es lo que tarda en generar la tabla con todos los elementos.
Alguna recomendacion o algo que pueda mejorar?
Gracias a todos.

Acl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<table id="tabla-productos" class="display tablaGeneral" cellspacing="0" width="100%">
    <thead>
      <tr>
            <th></th>
            <th style="display: none">Codigo</th>
            <th>Nombre</th>
            <!--<th>Descripcion</th>-->
            <th>Precio de Lista</th>
            <th>Precio de Venta</th>
            <!-- <th>Nombre de Proveedor</th>-->
            <th>Stock</th>
            <th>Ultima actualizacion</th>
            <th></th>
 
       </tr>
    </thead>
    <tbody>
        <tr>
 
            {% for producto in productos %}
 
                <td><a href="index.php?action=addCart&productoid={{ producto.getId }}"><b><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span>Carro</b></a></td>
 
                <td style="display: none">{{ producto.getBarsCode }}</td>
 
                <td><a href="#" onclick="productQuickView({{ producto.getId}}, {{ producto.getName|json_encode() }}, {{ producto.getDescription|json_encode() }}, {{ producto.getPrecioFinal|json_encode() }}, {{producto.getProviderName|json_encode()}})" ><span class="glyphicon glyphicon-zoom-in" aria-hidden="true"></span> {{ producto.getName|slice(0, 20)  }} </a></td>
 
                <!--<td>{{ producto.getDescription }}</td> -->
 
                <td>$ {{ producto.getListPrice }}</td>
 
                <td>$ {{ producto.getPrecioFinal }}</td>
 
                <!--<td>{{ producto.getProviderName }}</td> -->
                {% if producto.getStock < 3 %}
                    <td style="color: red">{{ producto.getStock }}</td>
                {% else %}
                    <td>{{ producto.getStock }}</td>
                {% endif %}
 
                <td>{{ producto.getLastUpdateDate }}</td>
 
                <td> <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModalCreateBarCode" onclick="guardarIdAndBarcode({{ producto.getId }}, {{ producto.getBarsCode }});" >Cod. Barra</button>
 
 
                <a name="editarProducto" href="index.php?action=editarproducto&productoid={{ producto.getId }}">
                <span class="glyphicon glyphicon-edit" aria-hidden="true"></span>Editar</a>
 
                <a name="borrarProducto" href="#" onclick="confirmarBajaProducto({{ producto.getId }})">
                <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>Borrar</a>
</td>
            </tr>
 
          {% endfor %}
    </tbody>
</table>
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

consulta generacion de tablas.

Publicado por Cbastian (6 intervenciones) el 07/02/2018 15:20:37
Hola franco,

Te comento que tuve el mismo problema con datatables, y la solución fue cambiar el plugin js; te recomiendo flexigrid o jqgrid que realizan peticiones por ajax solamente para cargar la información, es decir: Si te encuentras en la página 1 y tu paginador es de 20 registros solo renderizará estos 20 registros sin sobrecargar el navegador, si pasas a la página 2 realiza una nueva petición cargando los 20 registros siguientes, y así sucesivamente. En cuanto al filtro también funciona mediante ajax, y solo debes colocar unas cuantas lineas de php adicionales a tu consulta inicial, se que datatables es muy automático en este aspecto pero como te digo no encontre más solución.

Cuentanos como te va! Saludos.
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

consulta generacion de tablas.

Publicado por franco (3 intervenciones) el 07/02/2018 15:30:56
Bien, voy a probar.
Lo bueno de datatables que tenes el buscador incorporado y te ayuda un monton, no tengo que desarrollar un buscador.
Voy a probar esto que decis.
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

consulta generacion de tablas.

Publicado por Franco (3 intervenciones) el 07/02/2018 19:46:32
Cbastian, finalmente estoy utilizando jqGrid, me parecio mas rapido que flexigrid. Solo falta acomodarlo un poco ya que es medio feo pero me parecio la mejor opcion.
Gracias por la ayuda.
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