Strohhalm

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Privat

 

Anmelde-Formular



Als Strohhalm-Mitglied registrieren.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Magazin

 

strohhalm.org / Magazin / Programmierung Serverseitig / [PHP] Skript-Optimierung

[PHP] Skript-Optimierung

Was unterscheidet den PHP-Anfänger von den Profis? Da braucht man eigentlich gar nicht lange nachdenken: Der Unterschied ist der erzeugte Code! Bei beiden Programmierern wird das Ziel zwar meistens erreicht (dies sollte auf jeden Fall der ideale Fall sein). Es unterscheidet sich aber die Zeit, in der ein Skript abläuft, und die Wiederverwendbarkeit des Codes.

Der zeitliche Unterschied fällt aber beim Programmieren selbst häufig nicht auf, da ein Skript meist in einem Sekunden-Bruchteil abläuft. Und doch ist der Zeit-Bedarf alles andere als unerheblich. Dazu muss man sich lediglich klar werden, dass es nicht (unbedingt) auf das einzelne Skript ankommt. Auf einem Web-Server werden meistens mehrere Seiten gleichzeitig generiert und an Besucher übermittelt. Ist ein Skript also 2x schneller, so wird dieses Skript in der Summe bei 100 Seiten-Besuchern 200 mal so schnell erzeugt und angezeigt. Dabei ist jedem klar: je erfolgreicher eine Seite ist, desto mehr Benutzer greifen gleichzeitig auf das Skript zu. Lange Wartezeiten führen dann zur starken Kritik - und dies möchte man sich bei erfolgreichen Seiten nicht leisten.

Aus diesem Grund ist es sehr wichtig, ein schnelles Skript erstellt zu haben. Neben möglichst effizienter Programmierung, die sich in möglichst wenig Zeilen wiederspiegelt, gehören auch Kniffe, die nicht so offensichtlich sind und erst bewusst werden, wenn man das Handbuch durchstöbert. Aus diesem Grund schreiben wir Ihnen hier explizit unsere Methoden, um einen schnellen Code zu erstellen.

1. Möglichst wenige Datenbankabfragen

Jede Verbindung zur Datenbank benötigt Zeit, diese ist sogar alles andere als unerheblich. Den größten Fehler, den man dabei machen kann, ist die Verbindung zur Datenbank selbst immer wieder aufzubauen. Dies ist wohl der langwierigste Vorgang. Aber auch einzelne Abfragen benötigen beachtliche Zeit. Sie sollten aus diesem Grund darauf achten, möglichst nur einmal eine Datenbankverbindung aufzubauen und SQL-Abfragen zusammen zu fassen. Je nach Datenbank-Server stehen Ihnen hier unterschiedliche Möglichkeiten zur Verfügung (Join,...). Sollte die Verbindung auf eine Datenbank durch das häufige Aufrufen einer PHP-Datei sehr oft hergestellt werden, sollten Sie sich Gedanken über eine persistente Datenbank-Verbindung machen. Dies erhöht die Geschwindigkeit erheblich, benötigt aber zusätzliche Ressourcen auf Ihrem Server.

2. schnellere Funktionen verwenden

Reguläre Ausdrücke sind schön, sie sind jedoch sehr rechenaufwendig. Deshalb sollten Sie diese nur dann verwenden, wenn das auch wirklich notwendig ist. So können Sie mit str_replace Ihren Server im Vergleich zur Verwendung von preg_replace stark entlasten. Auch ist die Nutzung von preg_replace anstelle eregi zu empfehlen, um ein Skript zu beschleunigen.

3. Abbruchbedingungen von Schleifen im Voraus berechnen

Berechnen Sie bereits im Voraus, wie oft eine Schleife ausgeführt werden muss. Bei Schleifen, die oft durchlaufen werden, ist sonst der zusätzlich benötigte Rechenaufwand nicht zu übersehen.

Beispiel:
for ($i = 0; $i < count($feld); $i++) { // Array-Größe wird in jedem Schleifendurchlauf aufs neue // brechenet }

Besser:
$feldcount = count($feld); for ($i = 0; $i < $feldcount; $i++) { // einmal berechnen
}

Sollte diese Schleife beispielsweise 1000 mal durchgeführt werden, könnte man auf diese Weise 999 Berechnungen sparen, bei 100 gleichzeitigen Aufrufen sind das 99.900 Berechnungen. Das rechnet sich schnell.

4. oft verwendete Aktionen in Funktionen zusammenfassen

Fassen Sie Ihre Aktionen in Funktionen zusammen. Dies erhöht nicht nur die Lesbarkeit Ihres Codes und auch die Wiederverwendbarkeit, sondern auch die Ladezeit. Der Grund ist ganz einfach. Jede PHP-Datei muss vor der Ausführung vom Interpreter analysiert und in Maschinensprache umgewandelt werden, bevor Ihr Script ausgeführt werden kann. Ein Vorgang, der Zeit benötigt. Benutzen Sie nun eine Funktion mehrmals, muss diese nur einmal analysiert und umgeschrieben werden. Ein CPU springt dann an die entsprechenden Stellen. Diese Sprünge benötigen aber wesentlich weniger Zeit im Vergleich dazu, dass die gleiche Aktion mehrmals analysiert und umgeschrieben werden muss. Denjenigen, die schon einmal in Assambler programmiert haben, ist dies klar.

5. In DB Abfragen möglichst nur die benötigten Felder holen und nicht "Select *"

Dies hat zwei Gründe: Die Datenbank muss nicht erst nach den Spaltennamen suchen, sondern sie weiß durch die Abfrage bereits, welche Spalten es gibt. Dies spart eine interne Abfrage in der Datenbank, die jedoch - zugegebenermaßen - nicht sehr viel Zeit beansprucht. in PHP werden die Ergebniswerte in einem mehrdimensionalen Array zurückgegeben (abhängig je nach Datenbank). Je mehr Felder hier abgefragt werden müssen, desto mehr Zeit und vor allem Speicher wird verbraucht, der unter Umständen gespart werden könnte. Dieser Speicher könnte für andere Vorgänge besser genutzt werden, denn unter Umständen müsste das System jetzt Daten auf die Festplatte auslagern (virtueller Speicher), da der Arbeitsspeicher voll ist. Und dies würde Ihre Internet-Anwendung extrem ausbremsen. Aus diesem Grund sollten Sie auch so wenig Variablen wie möglich verwenden und diese wieder freigeben (unset), wenn sie nicht mehr benötigt werden (z.B. bei Schleifen).

6. In Strings ' statt "

Wenn in Strings keine Sonderzeichen \n,\r etc. verwendet werden und auch Variablen nicht enthalten sind, dann reichen einfache ' anstatt der üblichen ". PHP sucht in "Strings" nämlich immer nach eventuell vorhandenen Variablen um diese einzusetzen, in 'Strings' jedoch nicht. Diese Berechnung können wir umgehen. Dies sollte sich aber in einem Rahmen halten. Übersichtlicher Code geht vor!

7. Caching

Den größten Geschwindigkeitsgewinn bei PHP-Seiten erhält man logischerweise, in dem man gar keine Berechnungen ausführt. Dies erreicht man mit dem sogenannten Caching. Dabei wird eine PHP-Datei einmal berechnet und anschließend auf dem Server im sogenannten Cache zwischengespeichert. Greifen mehrere Benutzer auf eine Seite zu, so wird diese Seite nur einmal berechnet und anschließend "nur" noch den anderen Benutzern gezeigt (wir vernachlässigen jetzt die Tatsache, dass ein Internet-Server eine Datei für jeden Benutzer kopiert, da wir dies nicht ändern können).

8. Datenbanken nicht belästigen

Sollten Sie über mehrere Seiten hinweg immer wieder dieselbe Datenbankabfrage abwickeln (z.B. um zu überprüfen, welche Rechte ein Benutzer in einem Forum hat), so empfiehlt es sich, diese Daten in einer Session beim ersten Aufruf zu speichern. Dadurch wird es bei den Folgeseiten unnötig, auf die Datenbank zuzugreifen. Ein nicht zu vernachlässigender Vorteil.

Damit ein Code wiederverwendbar wird, müssen andere Kniffe zusätzlich beachtet werden. Vielleicht gehen wir später in einem anderen Artikel näher daraufhin ein. Zum derzeitigen Punkt verweise ich einfach auf externer Linkhttp://pear.php.net. Hier wird bereits sehr gut darauf eingegangen.

erstellt von externer LinkMathias Bank [http://www.thunder-2000.com]

Diskutieren Sie mit:

 
Nach oben springen

.(c) 2002 - 2017 strohhalm.org Community.Server powered by Manitu.Software powered by Mathias Bank
.Impressum + Team.Datenschutz