Laufzeit unnormal lang

dobermant

Erfahrenes Mitglied
Moin liebe Leut,

Ich habe eine Schleife mit ca 250 Durchläufen.
warum braucht das Script 10 sek bis zum letzten Durchlauf?
Innerhalb der Schleife gibs keine If-Abfragen oder sonstiges.
Es sollte also keine grosse Rechenaufgabe für PHP sein...

Habt Ihr Tipps wie ich das Beschleunigen kann?
besten dank im vorraus

doba
PHP:
<?
]while($kategorie = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
   <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#0099CC">
     <tr>
       <td><img src="bar.gif" width="5" height="18"></td>
       <td><b><a href="projekt_detail.php?kat_id=<? echo "$kat_id"; ?>" >
<? echo htmlentities($kategorie[name])?></a></b></td>
       <td><? echo $kategorie[visits]; ?></td>
       <td><? echo $kategorie[uniques]; ?></td>
       <td>otto</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
     </tr>
</table>
<?
}
?>
 
Versuch' mal folgendes:
PHP:
<?php
  while($kategorie = mysql_fetch_array($result, MYSQL_ASSOC)) {
  echo '   <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#0099CC">
     <tr>
       <td><img src="bar.gif" width="5" height="18"></td>
       <td><b><a href="projekt_detail.php?kat_id=' . $kat_id . '">' . htmlentities($kategorie['name']) . '</a></b></td>
       <td>' . $kategorie['visits'] . '</td>
       <td>' . $kategorie['uniques'] . '</td>
       <td>otto</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
     </tr>
</table>';
  }
?>
Wenn es nicht's hilft, solltest du möglicherweise die Abfrage überprüfen oder einschränken.
 
die abfrage an sich dauert nur 0.3 sekunden...
also wenn ich "nur die werte" per echo ausgebe und den tablekram weglasse...

mit table dauerts dann allerdings wie gesagt ca 10 sek.

danke ick werds mal testen.
 
und so?

PHP:
<?php 
  while($kategorie = mysql_fetch_array($result, MYSQL_ASSOC)) { 
  $string.='   <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#0099CC"> 
     <tr> 
       <td><img src="bar.gif" width="5" height="18"></td> 
       <td><b><a href="projekt_detail.php?kat_id=' . $kat_id . '">' . htmlentities($kategorie['name']) . '</a></b></td> 
       <td>' . $kategorie['visits'] . '</td> 
       <td>' . $kategorie['uniques'] . '</td> 
       <td>otto</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
     </tr> 
</table>'; 
  } 

echo $string;
?>
 
nachtrag:

Also wenn ich nun die Table per echo ausgeben lasse,
gehts schon mal um die haelfte schneller, sprich: 5 sek.

danke schonmal ;-)

laesst sich noch was rausholen?
 
Original geschrieben von dobermant
die abfrage an sich dauert nur 0.3 sekunden...
also wenn ich "nur die werte" per echo ausgebe und den tablekram weglasse...

mit table dauerts dann allerdings wie gesagt ca 10 sek.
Klar, das ist logisch. Du lässt ja auch bei jedem Zeilendurchlauf eine weiter Tabelle zeichnen. Versuch mal, in dem Du nur für jede Zeile eine entsprechende Tabellen-Zeile ausgeben lässt.

Wo läuft denn das Script? Lokaler Entwicklungserver oder Live-System?
 
@Chino

also du meinst innerhalb der durchlaeufe keine <table>,
sondern nur eine <td> ?!

hatte ich bewusst gemacht, um den bildschirmaufbau zu beschleunigen,
weil ich sonst warten muesste bis die table fertig ist.....
werde es aber eben testen...

auch dir ein thx

ps lokal und live (puretec)
 
hmmm es bleibt bei der besagten ezit...auch mit td anstatt mit table...
hat noch einer nen rat, oder geht nichts mehr?

thx doba
 
ka, mal anderen Schleifentyp nehmen? z.B. for-Schleife
Mal das MYSQl_ASSOC weglassen welches man ja nicht unbedingt braucht, etc.
Dazu sei noch gesagt, wenn du normalen Webspace hast, dann haben noch ca 1000 andere Leute auf den gleichen Server ihren Webspace und wenn da jeder sowas hat, dann kann es schon einen Moment dauern bis der PHP Interpreter alles auf die Reihe bekommt. Dann kommt es noch darauf an, wie stark die Leitung benutzt wird von den anderen Userns, was du selber für eine Anbindung hast. Stell dir ISDN vor, da brauchst du min5 Sekunden für sowas. Oder hast du andere Tools am laufen die aufs Internet zugreifen? Emule, Kazza etc?
Wenn du aber daheim auch schon 10 Sekunden brauchst, das verwundert mich aber. Habe gerade mal bei mir getestet und da geht das ratz fatz. Dauert es auf anderen Rechner LOKAL auch so lange?


Oder du beschränkst das Query mal indem du nur die werte rausholst du die brauchst

PHP:
<?php 
  $result=mysql_query('select * from xy'); // allgemein
  //oder
  $result=mysql_query('select name,visit, unigues from xy'); // beschränkt

  for($i=0; $kategorie[$i]=mysql_fetch_array($result); $i++){
    $string.='   <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#0099CC"> 
     <tr> 
       <td><img src="bar.gif" width="5" height="18"></td> 
       <td><b><a href="projekt_detail.php?kat_id=' . $kat_id . '">' . htmlentities($kategorie[$i]['name']) . '</a></b></td> 
       <td>' . $kategorie[$i]['visits'] . '</td> 
       <td>' . $kategorie[$i]['uniques'] . '</td> 
       <td>otto</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
     </tr> 
</table>'; 
  } 
echo $string; 
?>
 
Zurück