Ladezeit

L

lacie

Hallo zusammen, ich habe folgenden Code auf meiner Startseite eingebaut, und seitdem braucht sie bis zu 40 Sekunden zum laden... ohne den Code nur 0.2...
ich finde nur den Fehler im Code nicht. Es handelt sich um eine Mysql abfrage.

Code:
$abfrage3 = "SELECT titel,autor,erstellt,text,id FROM ".$GLOBALS['td_news']." ORDER BY erstellt DESC LIMIT 2";
$ergebnis3 = mysql_query($abfrage3);
while($row = mysql_fetch_array($ergebnis3)){
echo "<div class='news'>";
echo  "<div class='news_titel'>";
echo $row['titel'];
echo "</div><div class='news_autor'>".$lang['news_autor_a']." ";
echo "<a href='profile.php?nick=".$row['autor']."'>";
echo $row['autor'];
echo "</a></div><div class='news_date'>".$lang['news_date_t']." ";
echo changedate($row['erstellt']);
echo "</div><div class='news_text'>";
$Text = output(200,$row['text']);
echo TextAbschneiden($Text, 125);
echo "...";
echo "<br><br>";
echo "<a href='news.php?newsid=".$row['id']."'>".$lang['news_show_more']."</a>";
echo "</div>";
echo "</div>";
echo "<div class='clearfix'></div>";
}
echo "</div>";
 
Ich weiß das es etwas unübersichtlich ist, aber stimmt vllt schon was mit der Abfrage nicht?
oder hängt es bei der Ausgabe..?!
Nach den 40 Sekunden wird alles richtig angezeigt..
 
Zueinem ist es unsinig gleiche Div contäner in eine While schleife zu stellen.
Was warscheinlich dann auch zu deiner langen Ladezeit führt da momentan der Browser garnicht weiß was er machen soll.

PHP:
<?
$abfrage3 = "SELECT titel,autor,erstellt,text,id FROM ".$GLOBALS['td_news']." ORDER BY erstellt DESC LIMIT 2";
$ergebnis3 = mysql_query($abfrage3);
?>
<div class='news'>
<div class='news_titel'>
<?
while($row = mysql_fetch_array($ergebnis3)){
echo $row['titel'];
}
?></div></div>
<?

Am besten du liest das ganze erst in eine Variable ein.
Und gibst sie nacher an gewünschter stelle über die Variable wieder aus.

Mfg Splasch
 
Zuletzt bearbeitet:
PHP:
<? 
$abfrage3 = "SELECT titel,autor,erstellt,text,id FROM ".$GLOBALS['td_news']." ORDER BY erstellt DESC LIMIT 2"; 
$ergebnis3 = mysql_query($abfrage3); 
?> 
<div class='news'> 
<div class='news_titel'> 
<? 
while($row = mysql_fetch_array($ergebnis3)){ 
echo $row['titel']; 
} 
?></div></div>

macht ja nicht wirklich das was es machen soll.
Ich möchte ja News aus Mysql ausgeben.
jede News in eigenem Div tag.. das dürfte doch kein Problem für die While schleife sein.

Der Code von dir würde mir nur einmal die Divs öffnen dann alle Titel reinschreiben und dannach wieder die divs schließen..

Allerdings werde ich es mal ohne die Divs probieren und schauen ob es dann funktioniert.

Wenn noch jemand anders weiß was das Seitenladen schlauchen könnte, bidde ;)

Gruß lacie
 
Was sehr helfen kann bei der geschwindigkeits-Problemsuche ist ganz viele echos einzubauen in der du die Laufzeit hinschreibst. Wenn du dann siehst das er zwischen 2 Zeien sehr viel zeit liegt. Sieht man warum die Ladezeit so lange ist.

Da du sagst es sind 40 sekunden... brauchst du noch nicht mal mikrosekunden um ein ergebniss zu sehen:

PHP:
<?
// am anfang der php Datei:
$startzeit = time();
?>

und in deiner Schleife eben mit dem füllen:

PHP:
echo time() - $startzeit;

Und so suche erstmal wo er die lange Zeit verbringt.
 
Juhu super, danke toller Tipp, werde ich mir merken..

jetzt weiß ich das die Abfrage stimmt, aber eine meiner Funktionen einen Fehler enthält (BB Codes Wandler).

Ich schreib das Problem gleich hier rein, dann brauch ich keinen neuen Post aufzumachen. Aber erstma selber nach Lösungen suchen ;)
 
Was ist der unterschied zwischen
$bb = preg_replace('#\[b\](.*?)\[/b\]#s', '<b>$1</b>', $bb);
und
$bb = preg_replace('#\[b\](.*?)\[/b\]#se', '<b>$1</b>', $bb);

was bedeuted das #se bzw #s ?
 
von dem e habe ich noch nie gehört ,)

aber s aktiviert für die regexsuche den Singleline-mode. Was im endeffekt bedeuted das Zeilenumbrüche nicht beachtet werden und alles so geparst wird als würde es in einer langen Zeile stehen. Andest währe das mit dem BB Code nicht machbar wenn man ein <enter> zwischen start und endtag eingeben würde.
 
ah danke
vllt kannst du mit bei meinem nächsten Problem auch helfen:

wenn ich also

www.google.de
www.google.de

parse funktioniert alles wie es soll mit:

PHP:
$bb = preg_replace('#\[url=([^ ]+).*\](.*)\[/url\]#s', '<a href="$1">$2</a>', $bb);

allerdings das bekannte:

google
google

funktioniert nur wenn eben nur ein Element vorkommt.. ansonsten wird das erste [/url] einfach ignoriert..

PHP:
$bb = preg_replace('#\[url\](.*?)\[/url\]#s', '<a href="$1">$1</a>', $bb);

wo ist mein Fehler?!
 
Probier es mal damit: (in dieser reihenfolge)

PHP:
  $str = preg_replace('#\[url\](.*)\[/url\]#Uis',
                     '<a href="\1" target="_blank">\1</a>',
                     $str);
 $str = preg_replace('#\[url=(.*)\](.*)\[/url\]#Uis',
                     '<a href="\1" target="_blank">\2</a>',
                     $str);
$str = preg_replace('#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#Uism',
                     '\1<a href="\2\3" target="_blank">\2\3</a>\4',
                     $str);

Und das kleine e im Suchmuster steht für eval, da bedeutet das der "text" der replaced wurde mit eval() ausgegeben wird.
 
Zuletzt bearbeitet:
Zurück