![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 03.07.2000
Alter: 46
Beiträge: 430
|
![]() Hallo an alle php-freaks,
habe ein grosses Problem mit dem Ersetzen von Werten in einem Template. Die Platzhalter im Template möchte ich mit Daten von der Datenbank (mySQL) ersetzen. Code: // Template öffnen $tpl = opentpl($filename); // Inhalt Parsen while ($r_eintr = mysql_fetch_array($rs_eintr)) { $out_eintr.= $tpl; $out_eintr = str_replace({Wert1}, $r_eintr['wert1'], $out_eintr); ... hier kommen noch 6 Werte } Nach 30 Sekunden bekomme ich ein Execution Timeout ... Lasse ich die str_replace Function weg, dann funktionierts einwandfrei. Also liegts nicht an der DB ... Gibts vielleicht eine bessere oder schnellere Lösung für das Ganze? Danke für Eure Hilfe, lG, schera |
![]() |
![]() |
![]() |
#2 |
Elite
![]() Registriert seit: 08.11.2001
Alter: 42
Beiträge: 1.285
|
![]() hallo.
versuch mal folgendes: 1) vergiss $tpl 2) $out_eintr = file($filename); 3) $out_eintr = ereg_replace("{wert1}", $r_eintr['wert1'], $out_eintr); //beachte die Anführungszeichen und lies dir die Tips in der Doku: http://www.php.net/manual/de/function.str-replace.php 4) WICHTIG: echo $out_eintr; //falls es fehlen sollte. mfg c.
____________________________________
www.sagmueller.net Freedom - use it or lose it (Lawrence Lessig) Im übrigen bin ich der Meinung, dass Microsoft zerschlagen werden muss. |
![]() |
![]() |
![]() |
#3 | |
Veteran
![]() Registriert seit: 03.07.2000
Alter: 46
Beiträge: 430
|
![]() Zitat:
Weiters, wenn ich das Ganze mit $out_eintrag = file($filename); durchlaufe und mit ereg_replace mache, dann bekomme ich nur ein array zurück ... ![]() Ich öffne mit der Funktion $tpl = opentpl($filename) nur das File mit fopen und speichere es in eine Variable. Das muss ich auch machen, denn ansonsten kann ich die Daten nicht bearbeiten. Weiters mit ereg_replace oder preg_replace ist es genauso langsam. ![]() Oder habe ich da was falsch verstanden ... ? |
|
![]() |
![]() |
![]() |
#4 |
Elite
![]() Registriert seit: 08.11.2001
Alter: 42
Beiträge: 1.285
|
![]() sorry. ich hab das mit dem Array nicht bedacht... bin schon etwas eingerostet
das sollte funken: PHP-Code:
mfg c.
____________________________________
www.sagmueller.net Freedom - use it or lose it (Lawrence Lessig) Im übrigen bin ich der Meinung, dass Microsoft zerschlagen werden muss. |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Hi,
kann mir ehrlich gesagt nicht vorstellen, dass ereg_* schneller sein soll, als str_* Normalerweise: str_* < preg_* < ereg_* Aber je länger der string, desto länger braucht str_*, deshalb ist bei meinem Beispiel auch preg_* am schnellsten. Code:
str_replace: 0.025193929672241 preg_replace: 0.013223052024841 ereg_replace: 4.4316660165787 PHP-Code:
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#6 | |
Elite
![]() Registriert seit: 08.11.2001
Alter: 42
Beiträge: 1.285
|
![]() Zitat:
mfg c
____________________________________
www.sagmueller.net Freedom - use it or lose it (Lawrence Lessig) Im übrigen bin ich der Meinung, dass Microsoft zerschlagen werden muss. |
|
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() q.e.d.
![]() ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#8 | |
Veteran
![]() Registriert seit: 03.07.2000
Alter: 46
Beiträge: 430
|
![]() Zitat:
habe dies nun ausprobiert ... allerdings hilfts ned wirklich Vielleicht ist es ein wenig schneller, aber immer noch viel zu langsam. Daher kommt immer noch: Maximum execution time of 30 seconds exceeded Im Prinzip wenn ich 1000 Datensätze auslese und bei jeden Datensatz 7 x einen Replace mache, komme ich somit auf 7000 str_replace bzw. erreg_replace. hab eine Funktion gefunden wo man im Script den Execution Timout auf 0 setzen kann, allerdings dauert dann das Ganze bis zu 2 Min. Gibts vielleicht noch eine andere Möglichkeit einen Replace in einem Template zu machen ?? Danke und lG, schera |
|
![]() |
![]() |
![]() |
#9 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Sag nicht, du willst 1000 Datensätze anzeigen!?
![]() ![]() Sei so gut und poste mal deinen Source. ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#10 |
Veteran
![]() Registriert seit: 03.07.2000
Alter: 46
Beiträge: 430
|
![]() hmm, denn ganzen code zu post wäre heftig.
Das Ganze läuft so ab, dass die index.php je nach gewollter Anzeige ein entsprechendes Template öffnet. In diesem Template sollen nun die Datensätze angezeigt werden. D.h. es gibt einmal das Designtemplate wo der Header der Tabelle ect. drinnen steht. Dann gibt es noch ein Template wo das Design für eine Zeile der Tabelle drinnen ist. So nun wird einmal das Design geöffnet und dann wird die einzelne Zeile geöffnet und die Daten von der DB ersetzt. Wenn nun 1000 Datensätze angezeigt werden sollen, dann ersetzt er in einer Zeile 7 Felder im Template. Zum Schluss wird alles gesamt ausgegeben. Und ja ich möchte 1000 Datensätze anzeigen lassen ... da ich dann per Checkbox alle auswählen kann und danach einen Export fahren will. D.h. z.B. ich will alle Daten die mit der PLZ 1000 beginnen und mit 1100 aufhören. Danach will ich per Checkbox bestimmte auswählen können und weiters exportieren in ein file zum weiterverarbeiten in einem Seriendokument. puh ... das problem ist allerdings nicht das Handling, sondern das die Funktion str_replace ziemlich lange dauert bei mehreren Datensätze. Somit wollte ich mal nachfragen ob´s eine schneller Möglichkeit gibt Templates zu öffnen und darin Platzhalter zu ersetzen. Hoffe, dass ich es einigermassen sinnvoll erklären konnte. Danke für die Hilfe, lG, schera |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|