2016-12-21 1 views
1

Je travaille sur l'optimisation d'une application web php/mysql. Le problème auquel je suis confronté est que le résultat d'une fonction est vraiment grand! comme 4MB.Php retourne grand-données

J'appelle une fonction dans le fichier HTML-php:

<table id="example1" class="table table-bordered table-striped table-hover" width="100%"> 
     <thead> 
     <tr><th> 
    . 
    . 
    .</thead> 
<?php 
$results = $diosAdminMain->getResults(); 
echo $results; 
?> 
</table> 

et devrait obtenir les résultats de mon DB puis les présenter avec l'aide de datatables.

dans mon fichier de classe est ma fonction

 <?php 

     $diosAdminMain = new diosCore; 

     class diosCore{ 

     public function getResults(){ 


       $myhtml='<tbody>'; 
       . 
       . 
       . 
       $resultqry=mysql_query('SELECT * from table'); 

       while($row = mysql_fetch_assoc($resultqry)){ 
       $myhtml.= '<tr> 
        <td>'.$row['ID'].'</td> 
        <td>'.$row['PR1'].'</td> 
        <td>'.$row['PR2'].'</td> 
        <td>'.$row['THL1'].'</td> 
        <td>'.$row['THL2'].'</td> 
        <td>'.$row['NAME1'].'</td> 
       <td>'.$row['NAME2'].'</td>'; 
       } 

      $myhtml.='</tbody>'; 

      return $myhtml; 
      } 
    } 
    . 
    .  
    ?> 

J'essaie de trouver un moyen de faire faire cette présentation plus rapide parce que les résultats vont croître plus. Maintenant, pour 1800 lignes, prend presque 20 secondes pour montrer sur le chrome.

par les mesures que j'ai pris sans datatables il ne me permet de gagner 1-2 secondes (et je ne veux pas l'enlever comme la recherche rapide est impressionnant). J'ai essayé aussi d'optimiser les requêtes MySQL et le flux logique dans la fonction, mais le même résultat. J'exporté le résultat de la fonction en tant que texte brut et trouvé que est juste un grand résultat avec la taille 4Mo.

Est-il possible de supprimer en quelque sorte la taille de la variable myhtml de $ pour rendre les choses plus vite? ou de toute autre façon que j'ai manqué?

merci

+0

SIde note: S'il vous plaît jeter un oeil à http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php –

+0

Yeap, c'est la prochaine étape dans ce projet –

+1

Mmmm .... le meilleur penser que vous pouvez faire est de mettre en œuvre une pagination côté serveur au lieu de retourner tous les enregistrements à la fois;) – Hackerman

Répondre

1

Vous devriez envisager d'afficher les résultats page par page. Il n'est pas possible de montrer une énorme quantité de données dans une page sans impact sur les performances. Montrer 50 ou 100 lignes par page sera beaucoup plus rapide et fonctionnera avec toutes les quantités de données.

+0

Je pense que vous suggérez sur l'utilisation du côté serveur https://datatables.net/examples/data_sources/ Traitement de server_side.html Est-ce que cela va avoir un impact négatif sur les données de recherche INSTANT search ?? –

+0

Oui, c'est la voie à suivre avec les tableaux de données. Cela aura un impact sur la recherche MAIS cela vaut vraiment la peine parce que l'impact sera assez petit pour ne pas s'inquiéter. Et le temps de chargement initial sera beaucoup plus faible et restera pratiquement le même pour toutes les quantités de données (jusqu'à ce que les serveurs soient surchargés bien sûr). – Gardax