while Schleife - PHP / MySql Performance

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • while Schleife - PHP / MySql Performance

    Hallo Leutz,
    ich habe eine Frage betreffend der Performance von PHP / MySql. Und zwar lasse ich aus einer Datenbank ca. 200 Datensätze ausgeben. Dafür benutze ich eine „while Schleife“. Die Ausgabe beinhaltet lediglich Name, Vorname und einen Link zu einer Bilddatei. Der Browser gibt nicht einen Datensatz nach einander aus, sondern lädt alle Datensätze und gibt Sie dann alle zusammen aus. Bei ca. 200 Datensätze ist dies natürlich sehr unkomfortable.
    Hat einer eine ander Lösungsansatz als dieser hier....
    PHP-Code:
    $table = "models";
          $selectquery = "SELECT * FROM {$table} WHERE what=".$what." ORDER BY 'vorname' ASC";
          $result = @mysql_query($selectquery);
          if ($result){
          
           $rowCount = mysql_num_rows($result);
           $i=0;
           while($row = mysql_fetch_array($result)){
          ?>    
              <div style="padding-left:17px;margin-bottom:10px;float:left;display:block; z-index:5;">
                  <a href="model_details.php?idmodels=<?echo $row['idmodels']?>&vorname=<?echo $row['vorname'] ?>">
    <img src="img/models-uebersicht/tn/thumb_<?echo $row['foto'] ?>" style="border:1px solid #000000;width:64px; height:90px;"></a>

    <?echo rawurlencode(utf8_encode($row['vorname'])) ?>
            </div>
          <?
              $i++;
                  }
              }

  • #2
    ist schon richtig, was du machst. du solltest statt "SELECT *" aber "SELECT idmodels, vorname, foto" verwenden. spart rechenleistung.

    und statt mysql_fetch_array() könntest du auch mysql_fetch_assoc() nehmen, die numerischen indizes brauchst du ja offensichtlich nicht.

    darüberhinaus solltest du schauen, ob output buffering eingeschaltet ist, denn php sollte bei einem 'echo' durchaus alles ausgeben.
    ansonsten als letzte anweisung innerhalb der while-schleife flush(), damit php weiß, dass du das ganze direkt ausgeben willst.

    desweiteren könntest du statt inline-style-anweisungen im html-quelltext css-klassen verwenden, das würde den auszugebenden html-quelltext drastisch verkürzen und könnte 1. traffic sparen und 2. ebenfalls zur schnelleren anzeige im browser führen.

    noch was: zur anzeige eines textes im browser macht rawurlencode() keinen sinn. zur weitergabe als link schon. guck mal, wo du rawurlencode() verwendet hast.

    cya
    axo
    Zuletzt geändert von axo; 24.07.2006, 07:48.

    Kommentar


    • #3
      Hallo axo,
      vielen dank für diese Blitzantwort!!! Ich werde Deine Ratschläge befolgen und diese in mein Script gleich mal einbauen. Ich hoffe, dass die Performance sich dadurch verbessern läßt.
      Einen schönen Montag Morgen wünsch ick Dir

      Kommentar

      Lädt...
      X