PHP: Frage zu Befehl "echo"
Ich habe inzwischen meine ersten eigenen Webseiten auf PHP fertiggestellt und kümmere mich gerade um die Optimierung des Quellcodes. Ich habe nämlich bemerkt, dass mein Code an irgendeiner Stelle nur verzögert wiedergegeben wird, weswegen ich den Code etwas entschlacken möchte, damit dieser auf jedem Webserver anstandslos eingesetzt werden kann.
Ein Ziel dieser Optimierung ist auch der Einsatz des Befehls "echo" zum Erstellen des HTML-Grundgerüsts. bisher habe ich für jede neue Zeile im Quellcode den Befehl "echo" benutzt, was auf den Quellcode gut 200mal "echo" bedeutet. Ich wollte nun fragen, ob es eventuell schneller für den Webserver wäre, die Anzahl der "echo"-Befehle zu verringern oder ob ich sogar "echo" komplett vermeiden sollte, indem ich den HTML-Code durch "?>" vom PHP-Code trenne. Was meint ihr zu dieser Überlegung?
Ich rate dir auf jeden Fall, die Verbindung zu deiner Datenbank in einer extra Datei zu packen und diese mit include() in die PHP-Dateien einzubinden.
Ein echo Befehl kostet nicht viel Leistung, jedoch solltest du unnötige echo Befehle zur Übersicht entfernen. Du kannst den HTML-Head ebenfalls in einer externen Datei auslagern, wodurch dein Code auch etwas kleiner wird.
Im Grunde kannst du auch wie du schon sagtest, den PHP-Code und den HTML-Code von einander trennen. Dann musst du bei jeder Variable halt wieder <?php echo $i; > hinschreiben. Ich mach das nie so, da ich es ziemlich nervig finde.
Ich danke dir erst einmal für deine Antwort. Auf dein Anraten hin werde ich versuchen, mehrere "echo"-Befehle zu einem zusammenzufassen, einfach aus Übersichtlichkeit. Ich habe einige Zeit die Variante mit dem Öffnen und Schließen der PHP-Zonen versucht, aber wie du sagtest, das ist sehr umständlich. Eine Frage habe ich jedoch noch:
hennessy221 hat geschrieben:Ich rate dir auf jeden Fall, die Verbindung zu deiner Datenbank in einer extra Datei zu packen und diese mit include() in die PHP-Dateien einzubinden.
Wie meinst du das, dass ich die Verbindung in eine gesonderte Datei auslagern soll? Soll ich die "echo"-Befehle auslagern oder wie habe ich deine Aussage zu verstehen? Irgendwie verstehe ich nicht, worauf du hinaus willst.
Du hast mit sicherheit am Anfang in deinen PHP-Dateien, die Datenbankverbindung. Also beim Localhost beispielsweise:
$host = 127.0.0.1;
$user = "root";
$pw = "";
mysql_connect($host, $user, $pw)
Das ist ja bei jeder Datei von dir gleich. Die Teile deiner Scripte, die in den einzelnen Dateien gleich sind, würd ich in einer Extra-Datei machen um einen besseren Überblick zu haben. Damit meine ich Funktionen sowie die Datenbankverbindung. Du kannst diese mit der Funktion include() in deine einzelnen Scripte dann einbinden.
Ich habe diesen speziellen Fall zwar noch nicht selbst getestet, aber ich gehe stark davon aus, dass zwischen einem echo "test"; und einem Ausklammern des HTML-Quellcodes zwischen ?>test<?php kein allzu großer Unterschied besteht. Tendenziell kann man natürlich davon ausgehen, dass eine einzelne echo-Anweisung schneller ist als mehrere getrennte, daher ist es auch ziemlich egal ob du mehrere Variablen mit <?php echo $test; ?> einfügst wie hennessy221 schon sagte, oder ob du den Quelltext komplett mit PHP ausgibst. Egal wie du es anstellst, sollten sich die unterschiedlichen Textausgabe-Anwendungsmöglichkeiten in diesem Vergleich bei einem vollständigen Script im niedrigen einstelligen Prozentbereich bewegen, wenn sie überhaupt jenseits der Ein-Prozent-Marke ausmachen.
Nun sollte dir klar sein, dass die Textausgabe selbst nur in einem sehr sehr unwahrscheinlichen Fall dein Script verzögert. Es sollte unbedingt erwähnt werden, dass die von dir gewählte Variante - den HTML-Code im PHP-Dokument selbst zu speichern - eigentlich zu den schnellsten Ausgabemöglichkeiten zählt. Es gibt aber auch sehr gute Gründe, wieso dies in der fortgeschrittenen PHP-Programmierung nicht mehr so gemacht wird.
Damit spreche ich natürlich auf die Template-Klassen an. Ich habe vor ein paar Jahren für eines meiner Projekte mal meine eigene Template-Klasse geschrieben, welche die Designelemente der Webseite einigermaßen sauber vom PHP-Code getrennt hat. Dies hat zwar der Übersichtlichkeit und der Anwendungsfreundlichkeit sehr viel geholfen, verbunden damit war aber ein hoher Aufwand zur Einarbeitung in die neue Klasse sowie ein Geschwindigkeitsverlust von bis zu 50 Prozent zum ebenso schon erwähnten Include-Verfahren, obwohl es sich nur um ein sehr grundsätzliches Template-System handelte. Wenn man sich jedoch ein paar der besseren/schnelleren öffentlich verfügbaren Template-Engines ansieht und auf seinem Webserver PHP-Caching betreibt (zB IonCube's PHP Accelerator), dann lässt sich damit unglaublich viel der verlorenen Zeit wieder zurückholen.
Abschließend noch zur zusätzlich entstandenen Diskussion von sensitiven Daten, wie zum Beispiel die von hennessy221 erwähnten Datenbank-Verbindungsdaten. Diese sollte man 1. immer in einer externen Datei speichern und 2. sollte diese Datei möglichst außerhalb des über den Webbrowser zugänglichen Verzeichnisses gespeichert werden. Sollte beispielsweise /var/www/username/html dein web-root für die Domain sein, dann wäre unbedingt anzuraten die sensitiven Dateien mit Zugangsdaten unter /var/www/username oder einem anderen Unterverzeichnis (nicht html) zu speichern. So sind diese Daten selbst dann nicht zugänglich, wenn PHP vom Server mal nicht richtig interpretiert wird und der Sourcecode als Klartext übertragen wird.
Wie auch schon bereits erwähnt, empfehle ich dir bei größeren Projekten, Dateien auszulagern. Dieses betrifft z.B. die Datei, womit du dich zur Datenbank verbindest. Die Dateien kannst du dann per include/require Befehl wieder einbinden. Ich empfehle hier den Befehl require_once, der verhindert, dass eine Datei zweimal eingebunden wird, was zu einem Fehler führen würde.
Das Arbeiten mit dem echo Befehl in Kombination mit HTML ist durchaus möglich und manchmal sehr hilfreich. Wenn es sich um viel HTML Code handelt, rate ich dir allerdings dringend davon ab. Du machst es bei reichlich HTML Code am besten so:
- Code: Alles auswählen
<?php
dbconnection::connectToDatabase();
// Funktion, die eine Datenbankverbindung herstellt
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Seitentitel</title>
</head>
<body>
<p>Dieses ist meine neue Website. Folgende Nutzer sind registriert:</p>
<?php dbabfrage::getUserList(); ?>
...
//Funktion fragt Nutzer aus der Tabelle ab und gibt Sie mittels echo Befehl aus
Wenn es allerdings um reine Formatierungen etc. geht, würde ich es mit in den echo Befehl schreiben:
- Code: Alles auswählen
<?php
echo "<p style=\"color: #48888; font-weight: bold; font-size: 14px;\">
formatierter Text</p>";
?>
Link dieser Seite https://www.talkteria.de/forum/topic-159625.html
Ähnliche Themen
Weitere interessante Themen
- Calla Pflanze 2138mal aufgerufen · 1 Antworten · Autor: Schlafendes Wiesel · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Calla Pflanze
- Tipps zur Geranien Pflege 2384mal aufgerufen · 1 Antworten · Autor: C97 · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Tipps zur Geranien Pflege
- Kräuter auf Balkon - was ist sinnvoll und robust? 1298mal aufgerufen · 1 Antworten · Autor: Carmili · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Kräuter auf Balkon - was ist sinnvoll und robust?
- Luftwurzeln der Monstera: Tropfenbildung/Gestank 1767mal aufgerufen · 1 Antworten · Autor: Diamante · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Luftwurzeln der Monstera: Tropfenbildung/Gestank