Funktion ist sehr langsam
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bild
brille
code
ersetzen
fett text
finger
funktion
hund
image
laufzeit
liegen
list
optimieren
ren
string
text
unsicher text
url
ursache
-
Hallo,
hier ist meine Klasse:
<?
class CODE {
function highlight_php_string($string) {
$php_1 = explode("[php]", $string);
$final = $php_1[0];
for($i = 1; $i <= count($php_1) - 1; $i++) {
$php_2 = explode("[/php]", $php_1[$i]);
ob_start();
highlight_string(html_entity_decode(trim($php_2[0])));
$php_2[0] = ob_get_contents();
ob_end_clean();
$final .= '<font face="verdana" size="1">PHP:</font><br><table width="100%" border="0" cellpadding="2" cellspacing="0" class="warn_table"><tr><td>'.$php_2[0].'</td></tr></table>'.$php_2[1];
}
return $final;
}
function code2html($text) {
//Sonderzeichen in Entities umwandeln
if (HTML_DO == 0) {
$text = htmlentities($text);
}
$text = $this->highlight_php_string($text);
$text = nl2br($text);
//SMILIES
if (SMILIES_DO == 1) {
$text = str_replace(":respekt:", "<img src=\"./image/aufbau/board/smilies/lachend/smile051.gif\">", $text);
$text = str_replace(":zwinker:", "<img src=\"./image/aufbau/board/smilies/zwinkernd/003.gif\">", $text);
$text = str_replace("", "<img src=\"./image/aufbau/board/smilies/sonstige/021.gif\">", $text);
$text = str_replace(":christmas:", "<img src=\"./image/aufbau/board/smilies/weihnachten/002.gif\">", $text);
$text = str_replace(":cat:", "<img src=\"./image/aufbau/board/smilies/tiere/tier014.gif\">", $text);
$text = str_replace(":kopfab:", "<img src=\"./image/aufbau/board/smilies/brutal/brutal018.gif\">", $text);
$text = str_replace(":bart:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/sonstige/055.gif\">", $text);
$text = str_replace(":silly:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/verrueckt/010.gif\">", $text);
$text = str_replace(":brille:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/brille/brille014.gif\">", $text);
$text = str_replace(":waffe:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/brutal/brutal008.gif\">", $text);
$text = str_replace(":engel:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/engel/engel006.gif\">", $text);
$text = str_replace(":shocked:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/erschreckt/erschreckt001.gif\">", $text);
$text = str_replace(":finger:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/finger/finger005.gif\">", $text);
$text = str_replace(":haha:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/lachend/smile047.gif\">", $text);
$text = str_replace(":usa:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/laender/land001.gif\">", $text);
$text = str_replace("", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/liebe/liebe002.gif\">", $text);
$text = str_replace(":mexico:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/mithut/hut029.gif\">", $text);
$text = str_replace(":schnarch:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/muede/muede005.gif\">", $text);
$text = str_replace(":musik:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/musik/musik003.gif\">", $text);
$text = str_replace(":smoke:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/rauchend/rauch003.gif\">", $text);
$text = str_replace("", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/sauer/sauer014.gif\">", $text);
$text = str_replace(":pc:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/sonstige/048.gif\">", $text);
$text = str_replace(":party:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/sonstige/081.gif\">", $text);
$text = str_replace(":hund:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/tiere/tier005.gif\">", $text);
$text = str_replace(":unsicher:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/unsicher/014.gif\">", $text);
$text = str_replace(":verrueckt:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/verrueckt/006.gif\">", $text);
$text = str_replace(":lach:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/lachend/smile003.gif\">", $text);
$text = str_replace(":help:", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/unsicher/014.gif\">", $text);
$text = str_replace("", "<img src=\"http://".$_SERVER['HTTP_HOST']."/image/aufbau/board/smilies/mithut/hut018.gif\">", $text);
}
//Codes HTML
$text = str_replace("[br]", "<br>", $text);
$text = preg_replace("|\[gallery\](.*)\[/gallery]|", "<a href=\"#\" onclick=\"window.open('http://".$_SERVER['SERVER_NAME']."/galerie.php?id=$1','','height=600, width=500')\">zur Gallery</a>", $text);
$text = preg_replace("|\[newsimage=(.*);(.*);(.*);(.*)\]\[/newsimage\]|Uism", "<br><img src=\"$1\" width=\"$2\" hight=\"$3\" alt=\"$4\"><br>", $text); // IMAGES
$text = preg_replace("|\[newsimage=(.*);(.*);(.*);(.*)\](.*)\[/newsimage\]|Uism", '<table width="150" border="0" align="left" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
<tr>
<td><img src="$1" width="$3" hight="$2" alt="$4"></td>
</tr>
<tr>
<td bgcolor="#000066" class="warn_2">$5</td>
</tr>
</table>
', $text); // IMAGES
if (BBCODE_DO == 1) {
$text = preg_replace("|\[b\](.*)\[/b\]|Uism", "<b>$1</b>", $text); // FETT
$text = preg_replace("|\[i\](.*)\[/i\]|Uism", "<i>$1</i>", $text); // KURSIV
$text = preg_replace("|\[u\](.*)\[/u\]|Uism", "<u>$1</u>", $text); // Unterstrichen
$text = preg_replace("|\[kapit\](.*)\[/kapit\]|Uism", "<span class=\"kapit\">$1</span>", $text); // Kapit
$text = preg_replace("|\[size=(.*)\](.*)\[/size\]|Uism", "<font size=\"$1\" class=\"text_2\">$2</font>", $text); // Size
$text = preg_replace("|\[color=(.*)\](.*)\[/color\]|Uism", "<font color=$1 class=text_2>$2</font>", $text); // Color
$text = preg_replace("|\[left\](.*)\[/left\]|Uism", "<div align=\"left\">$1</div>", $text); // Links
$text = preg_replace("|\[center\](.*)\[/center\]|Uism", "<div align=\"center\">$1</div>", $text); // Mitte
$text = preg_replace("|\[right\](.*)\[/right\]|Uism", "<div align=\"right\">$1</div>", $text); // Rechts
$text = preg_replace("|\[URL=(.*)\](.*)\[/URL\]|Uism", "<a href=http://$1 target=\"blank\">$2</a>", $text); // URL=
$text = preg_replace("|\[URL\](.*)\[/URL\]|Uism", "<a href=http://$1 target=\"blank\">$1</a>", $text); // URL
$text = preg_replace("|\[MAIL=(.*)\](.*)\[/MAIL\]|Uism", "<a href=mailto:$1>$2</a>", $text); // Mail=
$text = preg_replace("|\[MAIL\](.*)\[/MAIL\]|Uism", "<a href=mailto:$1>$1</a>", $text); // Mail
$text = preg_replace("|\[IMG\](.*)\[/IMG\]|Uism", "<img src=$1>", $text); // Bild
$text = preg_replace("|\[list\](.*)\[/list\]|Uism", "<ul><li>$1</li></ul>", $text); // Bild
$text = preg_replace("|\[quote=(.*)\](.*)\[/quote\]|Uism", "<table width=\"500\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td width=\"50\"></td><td class=\"warn_table\"><span class=\"text_klein_s\">Zitat von $1:</span><br><span class=\"warn_1\">$2</span></td></tr></table>", $text); // QUOTE=
$text = preg_replace("|\[quote\](.*)\[/quote\]|Uism", "<table width=\"500\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr><td width=\"50\"></td><td class=\"warn_table\"><span class=\"warn_1\">$1</span></td></tr></table>", $text); // QUOTE
$text = preg_replace("|\[code\](.*)\[/code\]|Uism", "<table width=\"500\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" class=\"warn_table\"><tr><td><code>$2</code></td></tr></table>", $text); // Code
}
return $text;
}
}
?>
Das Problem dieser Klasse/Funktion ist das sie die Hauptseite stark ausbremst (Aufbauzeit: 5.5 Sek.) Diese Klasse soll BB-Codes, etc. "?bersetzen". Sie ist zwar noch lange nicht ausgereift. Trotzdem w?rde mich interessieren, weshalb die Klasse so langsam ist. Ich habe es auch mal ohen Klasse, nur mit Funktion versucht; das Ergebnis ist dasselbe.
mfg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
mh
vllt liegts daran, dass du sooooft ;) preg_replace aufrufst
wenn du einen langen text hast dauert das dann seine zeit...
und prob ma ob $_SERVER['HTTP_HOST'] nich immer einsetzt
ich weiss aber nich ob das als normale variable z?hlt oder immer aufgerufen wird
und ?berpr?f mal die for schleife
und pack mal ob_start weg...
einfach mal ausprobieren ;)
achja guck auch, ob der fehler nich bei dir, also bei deiner i-net config liegt -
Sollte es daran nicht liegen, mach dir Debugausgaben mit der microtime, damit du siehst, wo du die ganze Zeit verlierst. Aber es d?rfte wohl an den regul?ren Ausdr?cken liegen.
-
Hallo danielkuhner!
Wenn die RegExpressions tats?chlich die Ursache der langen Laufzeit sein sollten, dann verzichte doch probehalber mal auf den Modifikator "i", das sollte die Laufzeit in etwa halbieren. Ansonsten probiere deine Funktion zum Ersetzen von BB-Codes mal mit einem leeren $text aus. In diesem Fall m?sste preg_replace() sehr schnell wieder zur?ckkehren, da es ziemlich schnell feststellt, dass es nichts zu ersetzen gibt. Optimieren kannst du die Funktionen, indem du die, alle ziemlich ?hnlich aufgebauten BB-Codes, mit einem preg_replace()-Aufruf statt mit 18 ersetzt. Die Funktion preg_replace() l?sst sich auch mit eindimensionalen Arrays statt mit Strings f?ttern, und die BB-Codes lassen sich auch in einem "regul?ren" Ausdruck zusammenfassen.
http://de3.php.net/manual/de/function.preg-replace.php
Such auf der Seite mal nach: "implementing forum code".
MfG
alopex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage