serverlast bei teasertexten
daniel
- php
0 Tom
hallo alle zusammen,
eine frage:
ich habe ein paar textfelder mit text in einer datenbank,
der text darf bis zu 50.000 zeichen umfassen.
nun würde ich gern auf einer übersichtsseite teasertexte dazu anbieten, ähnlich wie auf den großen news-seite wie heise.de oder spiegel.de.
meine überlegung dazu:
ich nehme das textfeld, mache ein explode nach leerzeichen oder punkten und gebe dann zum beispiel die ersten 20 felder des entstandenen arrays aus.
nette idee, finde ich, ABER:
wie sieht das mit der performance aus? wenn du mehrere lange texte kommen, alle per explode bearbeitet werden müssen und auch wieder ausgegeben werden sollen, ist das ja schon eine menge arbeit für den parser.
was meint ihr dazu? habt ihr eine andere idee, wie man das lösen könnte? oder denkt ihr, ich überschätze die entstehende serverlast?
grüße,
daniel
Hello,
ich habe da neulich ein Spielscript gebastelt, um ein paar Belastungssituationen auszutesten. Es ging im Wesentlichen darum, ob eine Textdatei (bei 1000 Sätzen à 1000 Byte im Mittel) langsamer ist als eine Datenbank.
Dazu mussten mit der Funktion
define("ZEICHENSATZ","abcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ0123456789-+_&~.,!");
function get_random_str($lenmin,$lenmax)
{
mt_srand ((double)microtime()*1000000);
$anzahl = mt_rand($lenmin,$lenmax);
$zeichen=ZEICHENSATZ;
$zufall="";
$i=0;
while($i<=$anzahl)
{
$zufall.=substr($zeichen,mt_rand(0,strlen($zeichen)),1);
$i++;
}
return $zufall;
}
in einer Schleife 1000 Datensätze erzeugt werden. Das dauerte doch ziemlich lange ( > 1,5 Sec). Das Schreiben des Datenblockes in die Datei ging dagegen mit 0,08 Sec. recht flott, genauso wie das anschließende Holen (nach mehreren anderen Operationen, damit der Cache der HDD mal umgestapelt wurde)
Alle fertigen Funktionen von PHP funktionieren erstaunlich schnell. Nur wenn der Parser tatsächlich tätig werden muss, dauert es eben.
Explode() ist nunmal eine fertige Funktion und zerlegt Dir so einen Textblock in Nullkommanix. Ich habe es eben mal ausprobiert mit der Datei. Die war ja noch da.
Ich hätte da keine Bedenken.
Grüße
Tom
hi,
danke für die antwort.
klingt ja sehr erfreulich ;-)
habe in der zwischenzeit auch mal was gebastelt,
und kann es nur bestätigen:
funzt sehr schnell, auch bei längeren texten.
vielleicht hilfts ja noch dem einen oder anderen:
<p><?php // Anzahl Saetze anzeigen
$text=explode(".",$data['obj_description']);
$num_sentence=1; // Anzahl Seatze zur Anzeige festlegen
for($x=0;$x<$num_sentence;$x++) {
echo nl2br(txtrpl($text[$x]))."."; }
?>
<img src="/images/tpl_images/more-button.gif" alt="More" title="More" width="10" height="10"></p>
grüße,
Daniel Haller
Moin!
Alle fertigen Funktionen von PHP funktionieren erstaunlich schnell. Nur wenn der Parser tatsächlich tätig werden muss, dauert es eben.
Der Script-Code von PHP wird aber vor der Ausführung noch kompiliert. Da kommt zur Ausführungszeit kein Parser mehr zum Einsatz.
So richtig Performance bringt es, wenn man den kompilierten Zustand eines sich nicht mehr ändernden Skripts (das ist ja irgendwann mal der Fall, wenn man fertig entwickelt hat) cached. Dann spart man sich das ständige Parsen und Kompilieren des Codes. Außerdem könnte dann vielleicht noch etwas optimiert werden.
- Sven Rautenberg