|
Performence von Scripten
|
|
06.05.2005, 07:27
Beitrag: #1
|
|||
|
|||
|
Performence von Scripten
Hello you guy's
Erstemal eine Frage direkt an Virus, da ich weis dass er sie beantworten kann. Könntest du hier nochmal schriftlich festhalten, was PHP schneller ließt? Etwas wie echo "<table>"; echo "<td>"; echo "<tr>"; echo "[...]"; echo "</table>"; oder gleich alles in einem Rutsch mit einem echo. Oder wie sieht das aus, wenn ich das HTML ganz wechlasse und ne andere HTML Datei einfach includiere? Ach und wie war das noch mit einem Hochzeichen (') oder zwei Hochzeichen (")? Da hattest doch auch mal was zu gesagt. Ansonsten: Wo gebt ihr (Performance mäßig) acht, beim Coden? Wie lese ich ne DB am geschicktesten aus? SELECT * ist irgendwie blöde, weil er da immer mehr selektiert als man meißt möchte. Gibts da noch was genaueres als SELECT FROM xyz WHERE xyz? Wäre dankbar für Antworten, greg http://youtube.com/watch?v=lTdn_vjZZp8 Studie: Moorhuhn ist Killerspiel und Egoshooter zugleich! |
|||
|
06.05.2005, 07:50
Beitrag: #2
|
|||
|
|||
|
Allein wegen dem Aussehen include ich meine Templates, also kein PHP im HTML Code und kein HTML im PHP Code.
Bei DB Abfragen ist es besser wenn man sowas mit [code:1] SELECT name,email,homepage FROM tabelle [/code:1] macht, also nur das was man braucht. Und wie meinst du das Performance mäßig? Sauber Einrücken und ein paar andere Eigeneschaften, so das man nicht [code:1] if($foo=="bar") { echo "hallo"; } [/code:1] macht sondern eher sowas wie [code:1] if($foo == "bar") { echo "hallo"; } [/code:1] Auch sollte man bei ' " vorsichtig sein, zb wenn du etwas von der DB Selektierst zb. wenn $_GET['id'] gleich der in der DB angegeben id ist. Dann musst du [code:1] SELECT name,email FROM tabelle WHERE id='$_GET['id']' [/code:1] machen damit PHP erkennt das du mit id eine Zahl meinst. Naja ansonsten frag nach^^ http://blog.rswhite.de/ MaStA schrieb:[...]keiner is perfekt ... außer white! Stephan Schmidt schrieb:Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen. |
|||
|
06.05.2005, 09:33
Beitrag: #3
|
|||
|
|||
|
Die Zeit für den Aufbau einer Seite ist definitiv ein wichtiges Kriterium. Da sollte man sich schon beim programmieren Gedanken drüber machen, wie das alles aufgebaut ist. Um direkt auf deine Frage einzugehen greg, Dinge die in einfachen Hochkommata stehen werden nicht geparsed, auf deutsch einfach nur ausgegeben. Dinge die in doppelten Hochkommata's stehen, werden geparsed.
Bsp.: PHP-Code: <phpEs ist zu deuten, dass es bei deiner Variante besser wäre, entweder alles in einzelnen Hochkommata's zu schreiben oder gar aus den PHP Teil rauszunehmen. Wenn du dies machst, hast du garantiert die schnellste Variante. Wenn du viele echo's schreibst dauert dies auch ein wenig länger, unbedeutend aber es dauert länger denn der Interpreter muss erneut das echo interpretieren und ausführen. Performance lässt sich nicht nur immer beim Quelltext rauskitzeln. Um eine Seite schnellstmöglich aufbauen zu lassen benötigt dies auch angemessene Bilder (wenn welche vorhanden sind). Nützt ja nichts das Script schnellstmöglich ablaufen zu lassen, wenn nebenbei noch ein 1MB Bild geladen werden muss. Aber man kann auch vieles durch die SQL Anweisungen vereinfachen. Wie White schon schrieb, kann man aus mehreren Tabellen gleichzeitig was auslesen. Oder wenn man aus einer einzelnen Tabelle etwas ausliest, sollte man nicht alles auslesen lassen sondern nur das, was an auch braucht. Vorsicht aber, wenn man das Script erweitert und ein weiteres Attribut benötigt welches nicht angegeben ist, so kann man sich da schon mal grün und blau ärgern wenn man stundenlang geschaut hat wo der Fehler liegt und ihn dann in der SQL-Anweisung findet. Gut gestellte SQL-Anweisungen machen auch schon eine Menge aus, seien es die Schlüsselworte LIMIT, LEFT OUTER JOIN etc. oder die Eingrenzung der Abfrage mit blabla > 1258 und so weiter. Also wie ich finde, findet man mit der Zeit immer mehr Dinge, wie man die Performance der Scripte steigern kann. Der Quelltext schrumpft dementsprechend auch meistens. |
|||
|
06.05.2005, 11:14
Beitrag: #4
|
|||
|
|||
|
Vielen Dank erstmal. Finde ich wieder super wie du das zusammengefasst hast Virus! Ist genau das was mich interessiert hatte.
Aber dazu habe ich spontan mal eine Frage, die ich mir selbst nur durch testen erklären könnte. Wenn ich einen Query sende, der die Daten aus mehreren Tabellen selektiert, z.B. folgendermaßen: [php:1] mysql_query(SELECT * FROM table1,table2,table3); [/php:1] Btw. da fällt mir grad ein, geht das überhaupt? Ich merk nämlich jetzt gerade, dass ich was falsches im Kopf hatte. White hat oben SELECT spalte1,spalte2 geschrieben, aus einer Tabelle. Mehrere Tabellen kann man doch nicht selektieren oder? Grr das verwirrt mich hier grad alles. Hab ich doch neulich erst gemacht?! Ahh ich muss mal was nachlesen... http://youtube.com/watch?v=lTdn_vjZZp8 Studie: Moorhuhn ist Killerspiel und Egoshooter zugleich! |
|||
|
06.05.2005, 11:17
Beitrag: #5
|
|||
|
|||
|
Würd mich auch interessieren, mache nämlich z.z. für jede Tabelle ne eigene query
. |
|||
|
06.05.2005, 11:33
Beitrag: #6
|
|||
|
|||
|
Werd hier mal ein kleines Beispiel einbringen. Wir haben eine Tabelle (Name: Kunden) in der wir Kundendaten eintragen. Die Tabelle hat auch ein Attribut welches sich ID nennt, dies ist auf Auto_Increment gestellt und ist gleichzeitig Primärschlüssel.
Eine zweite Tabelle (Name: Rechnungen) beinhaltet alle Rechnungen eines Kunden. Ein Attribut wäre hier wieder ID welcher als Fremdschlüssel benutzt wird. Eine Anfrage würde so aussehen. [code:1]SELECT Name, Adresse, Rechnung FROM Kunden,Rechnungen WHERE ID = 5[/code:1] Hier wird der Kunde mit dem Namen welcher die ID 5 hat angezeigt. Hinzu wird auch die Adresse angezeigt die in derselben Tabelle steht. Nun kommt das wo das Pferd das Wasser lässt, es wird ebenfalls die zugehörige Rechnung welche die ID 5 hat angezeigt. Mit dieser Abfrage spart man eine Menge Text denn ansonsten müsstet ihr in der ersten Anweisung die ID abfragen und dann könnt ihr erst die Rechnungen anzeigen lassen. Ein Problem, welches keins ist, entsteht dann, wenn die Tabellen nicht durch Schlüssel verbunden sind. Schlüssel wie z.B. die ID. |
|||
|
06.05.2005, 11:58
Beitrag: #7
|
|||
|
|||
|
Ansonsten halt JOIN verwenden.
http://blog.rswhite.de/ MaStA schrieb:[...]keiner is perfekt ... außer white! Stephan Schmidt schrieb:Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen. |
|||
|
06.05.2005, 14:58
Beitrag: #8
|
|||
|
|||
|
Alles klar. Danke.
http://youtube.com/watch?v=lTdn_vjZZp8 Studie: Moorhuhn ist Killerspiel und Egoshooter zugleich! |
|||
|
|





