Dieser Artikel stellt praktische Lösungen für PHP-Optimierung, Pufferung und Komprimierung vor.
Als beliebte Web-Programmiersprache ist PHPs größter Vorteil die Geschwindigkeit. PHP4 hat dies sehr gut geschafft und es gibt kaum eine schnellere Skriptsprache als diese. Wenn Ihre Anwendungslast jedoch hoch ist, Ihre Bandbreite relativ gering ist oder es andere Engpässe gibt, die Ihre Serverleistung beeinträchtigen, können Sie auch einige der Rezepte ausprobieren, die ich Ihnen verschrieben habe, um zu sehen, ob sie funktionieren.
1. Code-Optimierung
Wenn es um Code-Optimierung geht, denken Sie vielleicht an sauberen und klaren Code, aber das ist nicht der Sinn dieses Artikels, denn wenn Sie Geschwindigkeit anstreben, müssen Sie entsprechende Anpassungen am PHP-Quellcode vornehmen. Im Allgemeinen werden überflüssige Kommentare entfernt, um den Code unlesbar zu machen. Aber für einen Programmierer mit guten Qualitäten ist das einfach unglaublich. Glücklicherweise hat Zend Technologies die Zend Optimization Engine veröffentlicht, die Ihnen dabei hilft. Es ist jetzt kostenlos, Sie müssen jedoch der Zend Optimizer-Lizenz folgen. Dieses Produkt kann den von der Engine generierten Zwischencode optimieren.
Die Installation dieser Engine ist relativ einfach. Nachdem Sie die der Plattform entsprechende Version heruntergeladen haben, entpacken Sie die komprimierte Datei, fügen Sie dann die folgenden zwei Zeilen zur Datei php.ini hinzu, starten Sie den Webserver neu und fertig.
zend_optimizer.optimization_level=15
zend_extension="/path/to/ZendOptimizer.so"
zend_loader.enable=Aus
Wenn es sich um eine Win32-Plattform handelt, sollte es sein:
zend_optimizer.optimization_level=15
zend_extension_ts="C:Pfad der endOptimizer.dll"
zend_loader.enable=Aus
! Das ist kein Fehler? Warum drei Zeilen? Eigentlich ist die dritte Zeile optional. Da es den Anschein hat, dass das Ausschalten von zend_loader die Geschwindigkeit etwas verbessern kann, lohnt es sich, diese dritte Zeile in php.ini einzufügen. Zu beachten ist, dass Voraussetzung für die Deaktivierung ist, dass Sie nicht das Verschlüsselungsprogramm Zend verwenden.
2. Pufferung
Wenn wir die Geschwindigkeit weiter verbessern wollen, müssen wir den Einsatz von Pufferungstechnologie in Betracht ziehen. Es gibt einige alternative Lösungen, darunter Zend Cache (Betaversion), APC und Afterburner Cache sowie jpCache.
Bei den oben genannten handelt es sich ausschließlich um Puffermodule. Sie speichern den durch die erste Anfrage für die .php-Datei generierten Zwischencode im Speicher des Webservers und geben dann die „kompilierte“ Version für nachfolgende Anfragen zurück. Da dadurch die Lese- und Schreibvorgänge auf der Festplatte sowie die gesamte Arbeit im Speicher reduziert werden, kann dieser Prozess die Anwendungsleistung erheblich verbessern.
Es sind viele solcher Produkte verfügbar. Für wen sollten Sie sich also entscheiden?
Zend Cache ist ein gutes kommerzielles Produkt. Nachdem Sie diese großen PHP-Seiten zum ersten Mal geladen haben, werden Sie offensichtlich die Geschwindigkeitssteigerung spüren und der Server wird mehr Ressourcen reservieren. Leider kostet dieses Produkt Geld, aber in manchen Fällen möchte man nicht am Geld sparen.
Afterburner Cache ist ein Produkt von Bware Technologies und befindet sich derzeit in der Beta-Version. Es scheint mit Zend Cashe identisch zu sein, kann jedoch nicht so gute Ergebnisse erzielen wie Zend Cache und kann auch nicht mit der Zend-Optimierungs-Engine arbeiten, ist jedoch kostenlos , also I Dieses Modul wird verwendet.
APC (Alternative PHP Cache) ist ein weiteres kostenloses Modul von Community Connect, das offenbar für Produktionsumgebungen bereit ist.
3. Komprimierung von Webinhalten
Bei zunehmend überlasteten Netzwerken ist die Einsparung von Bandbreite ebenso wertvoll wie die Einsparung von Wasser. Gemäß IETF-Standards sollten die meisten Browser mit gzip komprimierte Inhalte unterstützen. Das bedeutet, dass Sie gzip-komprimierte Inhalte an den Browser senden können und der Browser die Daten transparent dekomprimiert.
mod_gzip ist ein kostenloses Apache-Modul von Remote Communications, das statische Webinhalte komprimieren und an den Browser senden kann. Für die meisten statischen Webseiten ist dieses Modul geeignet. Obwohl
Leute von der Firma Remotecommunications sagten, dass dieses Modul alle von mod_php, mod_perl, mod usw. generierten dynamischen Inhalte unterstützt, scheint es der Mailingliste mod_gzip nach zu urteilen, dass dieses Problem voraussichtlich nicht gelöst wird bis 1.3.14.6f.
Wenn wir dynamische Inhalte komprimieren möchten, können wir class.gzip_encode.php verwenden, eine PHP-Klasse, die am Anfang und am Ende des Skripts verwendet wird. Für die gesamte Website werden die Funktionen in auto_prepend und auto_append der php.ini aufgerufen. Für Einzelheiten können Sie das Programm dieses Kurses lesen. Dieses Programm ist gut kommentiert und der Autor erzählt Ihnen fast alles. Aber bevor Sie es verwenden, muss Ihr PHP zur Unterstützung von zlib kompiliert werden.
Für PHP 4.0.4 besteht eine neue Lösung darin,ob_gzhandler
zu verwenden, der den gleichen Effekt wie die obige Klasse erzielen kann. Fügen Sie einfach den folgenden Satz zu php.ini hinzu:
Dadurch aktiviert PHP die Ausgabepufferung und komprimiert die gesamte Ausgabe. Wenn es einen besonderen Grund gibt, warum Sie nicht möchten, dass der gesamte Inhalt komprimiert und ausgegeben wird, können Sie der .htaccess-Datei die folgende Zeile hinzufügen, um die Dateien im entsprechenden Verzeichnis zu komprimieren.
php_value output_handler ob_gzhandler
kann auch direkt im PHP-Code hinzugefügt werden:
ob_start("ob_gzhandler");
Diese Komprimierungstechnologie sieht für Netscape Communicator-Benutzer unvollständig aus, da sie keine Grafikdateien komprimieren kann Bei der Komprimierung von JPEG- und GIF-Dateien gibt es dieses Problem nicht.
Fazit:
Die Verwendung der in diesem Artikel besprochenen Techniken sollte die Leistung Ihrer Website verbessern. Beachten Sie jedoch Folgendes:
- PHP ist möglicherweise nicht die Ursache für den Engpass. Überprüfen Sie noch einmal, ob andere Ursachen vorliegen (z. B. Datenbank)
. - Sie können den Serverleistungsstatus nicht maximieren. Bevor Sie sich also über PHP und seine Pufferung beschweren, überlegen Sie, ob es an der Zeit ist, Ihren Server zu aktualisieren oder eine dynamische Lastausgleichstechnologie einzuführen (das ist eine Menge Geld).
- Unterschätzen Sie nicht die Inhaltskomprimierung, während Sie Geschwindigkeitsverbesserungen bei Ihren PHP-Anwendungen in Ihrem 100-MB-Intranet feststellen. Vergessen Sie nicht, dass sich Ihre Modembenutzer über Ihre 100-KB-HTML-Seiten beschweren.