Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der PHP-Codeoptimierung

Zusammenfassung der PHP-Codeoptimierung

巴扎黑
巴扎黑Original
2017-03-19 09:48:251348Durchsuche

[Einführung] 1- Schreiben Sie modularen Code. Guter PHP-Code sollte modularer Code sein. Die objektorientierten Programmierfunktionen von PHP sind besonders leistungsstarke Werkzeuge zum Aufteilen Ihrer Anwendung in Funktionen oder Methoden. Sie sollten das Front-End-HTML-CSS-JavaS so weit wie möglich von der Serverseite Ihrer Anwendung trennen

1- Schreiben Sie modularen Code

Guter PHP-Code sollte modularer Code sein. Die objektorientierten Programmierfunktionen von PHP sind besonders leistungsstarke Werkzeuge zum Aufteilen Ihrer Anwendung in Funktionen oder Methoden. Sie sollten den Front-End-HTML-/CSS-/JavaScript-Code so weit wie möglich von der Serverseite Ihrer Anwendung trennen. Sie können auch dem MVC-Muster (Model-View-Controller) in jedem PHP-Framework folgen.

2- Code-Schreibstandards

Guter PHP-Code sollte über einen vollständigen Satz von Code-Schreibstandards verfügen. Das Erreichen von Programmierstandards durch die Benennung von Variablen und Funktionen, einheitliche Methoden für den Zugriff auf die Datenbank und die Behandlung von Fehlern sowie die gleiche Codeeinrückungsmethode können die Lesbarkeit Ihres Codes verbessern.

3- Portablen Code schreiben

Guter PHP-Code sollte portierbar sein. Sie können die vorhandenen PHP-Funktionen wie magische Anführungszeichen und kurze Tags verwenden. Versuchen Sie, Ihre Anforderungen zu verstehen, und schreiben Sie dann Ihren Code, um ihn durch Anpassung der PHP-Funktionen eigenständig und portierbar zu machen.

4- Schreiben Sie sicheren Code

Guter PHP-Code sollte sicher sein. PHP5 bietet hervorragende Leistung und Flexibilität. Das Sicherheitsproblem liegt jedoch ausschließlich bei den Entwicklern. Für einen professionellen PHP-Entwickler ist es von entscheidender Bedeutung, ein tiefes Verständnis der wichtigsten Sicherheitslücken zu haben, wie zum Beispiel: Cross-Site-Scripting (XSS), Cross-Site-Request-Forgery (CSRF), Code-Injection-Schwachstellen und Schwachstellen bei der Zeichenkodierung. Durch die Verwendung der speziellen Features und Funktionen von PHP, wie zum Beispiel: mysql_real_escape_string usw., können Sie sicheren Code schreiben.

5- Codekommentare

Codekommentare sind ein wichtiger Teil des Codes. Durch Codekommentare können Sie wissen, was die Variable oder Funktion tut, was bei der zukünftigen Codepflege sehr nützlich sein wird.

6- Vermeiden Sie kurze Tags

Ersetzen Sie alle kurzen Tags durch vollständige PHP-Tags.

7- Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen

Verwenden Sie für Zeichenfolgen immer einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Leistungseinbußen durch die Suche von PHP nach Variablen innerhalb der Zeichenfolge zu vermeiden . Es ist schneller, die Zeichenfolge in einfache Anführungszeichen statt in doppelte Anführungszeichen zu setzen. Da PHP nach Variablen in Zeichenfolgen sucht, die von doppelten Anführungszeichen umgeben sind, funktionieren einfache Anführungszeichen nicht. htmlspecialchars stellt sicher, dass auch einfache Anführungszeichen (') in HTML-Entitäten konvertiert werden, was eine gute Praxis ist.

9- Verwenden Sie eine durch Kommas getrennte Zeichenfolgenausgabe

Die Ausgabe einer durch Kommas (,) getrennten Zeichenfolge über die Echo-Anweisung ist besser als die Verwendung des Zeichenfolgenverkettungsoperators (. ) hat eine bessere Leistung.

10- Überprüfen Sie den übergebenen Wert vor der Ausgabe

Überprüfen Sie den übergebenen Wert $_GET['query'] vor der Ausgabe. Mit der Funktion isset oder empty können Sie prüfen, ob eine Variable null ist.

11- Andere

Wenn Sie eine Klassenmethode als statisch definieren können, versuchen Sie, sie als statisch zu definieren, und ihre Geschwindigkeit wird um fast das Vierfache erhöht.

    $row['id'] ist 7-mal schneller als $row[id].
  • echo ist schneller als print und verwendet mehrere Parameter von echo (Anmerkung: bezieht sich auf die Verwendung von Kommas anstelle von Punkten) anstelle einer Zeichenfolgenverkettung, z. B. echo $str1, $str2.
  • Bestimmen Sie die maximale Anzahl von Schleifen, bevor Sie die for-Schleife ausführen. Berechnen Sie nicht den Maximalwert für jede Schleife. Verwenden Sie stattdessen am besten foreach.
  • Heben Sie die Registrierung nicht verwendeter Variablen, insbesondere großer Arrays, auf, um Speicher freizugeben.
  • Vermeiden Sie die Verwendung von __get, __set, __autoload.
  • require_once() ist teuer.
  • Versuchen Sie, beim Einschließen von Dateien absolute Pfade zu verwenden, da dies die Geschwindigkeit der PHP-Suche nach Dateien in include_path vermeidet und die zum Parsen des Betriebssystempfads erforderliche Zeit kürzer ist.
  • Wenn Sie wissen möchten, wann das Skript ausgeführt wird (Anmerkung: Der Server empfängt die Client-Anfrage), ist die Verwendung von $_SERVER['REQUEST_TIME'] besser als time(). Die Funktion
  • ersetzt reguläre Ausdrücke, um dieselbe Funktion zu erfüllen.
  • Die Funktion str_replace ist schneller als die Funktion preg_replace, aber die Funktion strtr ist viermal effizienter als die Funktion str_replace.
  • Wenn eine String-Ersetzungsfunktion Arrays oder Zeichen als Parameter akzeptiert und die Parameterlänge nicht zu lang ist, können Sie erwägen, einen zusätzlichen Ersetzungscode zu schreiben, sodass jeder übergebene Parameter aus einem Zeichen besteht anstatt nur eine Codezeile zu schreiben, die Arrays als Parameter für Abfragen und Ersetzungen akzeptiert.
  • Die Verwendung einer selektiven Verzweigungsanweisung (Übersetzung: Groß-/Kleinschreibung wechseln) ist besser als die Verwendung mehrerer if, else if-Anweisungen.
  • Die Verwendung von @ zum Blockieren von Fehlermeldungen ist sehr ineffizient, äußerst ineffizient.
  • Öffnen Sie das mod_deflate-Modul von Apache, um die Geschwindigkeit beim Surfen im Internet zu verbessern.
  • Die Datenbankverbindung sollte nach Beendigung der Verwendung geschlossen werden und keine langen Verbindungen verwenden.
  • Fehlermeldungen sind teuer.
  • Das Erhöhen lokaler Variablen in der Methode ist am schnellsten. Fast so schnell wie der Aufruf lokaler Variablen in einer Funktion.

  • Das Erhöhen einer globalen Variablen ist 2-mal langsamer als das Erhöhen einer lokalen Variablen.

  • Das Erhöhen einer Objekteigenschaft (z. B. $this->prop++) ist dreimal langsamer als das Erhöhen einer lokalen Variablen.

  • Das Erhöhen einer undefinierten lokalen Variablen ist 9 bis 10 Mal langsamer als das Erhöhen einer vordefinierten lokalen Variablen.

  • Allein das Definieren einer lokalen Variablen, ohne sie in einer Funktion aufzurufen, verlangsamt die Arbeit ebenfalls (im gleichen Maße wie das Erhöhen einer lokalen Variablen). PHP wird wahrscheinlich prüfen, ob eine globale Variable vorhanden ist.

  • Die Methodenaufrufe scheinen unabhängig von der Anzahl der in der Klasse definierten Methoden zu sein, da ich 10 Methoden hinzugefügt habe (sowohl vor als auch nach dem Testen der Methode), aber es gab keine Leistungsänderung .

  • Methoden in einer abgeleiteten Klasse werden schneller ausgeführt als dieselbe Methode, die in einer Basisklasse definiert ist.

  • Der Aufruf einer leeren Funktion mit einem Parameter dauert so lange wie das 7- bis 8-fache Erhöhen der lokalen Variablen. Ein ähnlicher Methodenaufruf erfordert fast 15 Inkrementierungsoperationen für lokale Variablen.

  • Die Zeit, die Apache zum Parsen eines PHP-Skripts benötigt, ist zwei- bis zehnmal langsamer als das Parsen einer statischen HTML-Seite. Versuchen Sie, mehr statische HTML-Seiten und weniger Skripte zu verwenden.

  • Sofern das Skript nicht zwischengespeichert werden kann, wird es bei jedem Aufruf neu kompiliert. Durch die Einführung eines PHP-Caching-Mechanismus kann die Leistung normalerweise um 25 bis 100 % verbessert werden, um den Kompilierungsaufwand zu eliminieren.

  • Versuchen Sie, so viel wie möglich zwischenzuspeichern. Sie können Memcached verwenden. Memcached ist ein leistungsstarkes Speicherobjekt-Caching-System, mit dem sich dynamische Webanwendungen beschleunigen und die Datenbanklast reduzieren lassen. Das Zwischenspeichern von OP-Codes ist nützlich, damit Skripte nicht für jede Anfrage neu kompiliert werden müssen.

  • Wenn Sie eine Zeichenfolge bearbeiten und prüfen müssen, ob ihre Länge bestimmte Anforderungen erfüllt, verwenden Sie natürlich die Funktion strlen(). Diese Funktion wird ziemlich schnell ausgeführt, da sie keine Berechnungen durchführt und lediglich die bekannte Zeichenfolgenlänge zurückgibt, die in der zval-Struktur (der in C integrierten Datenstruktur zum Speichern von PHP-Variablen) gespeichert ist. Da strlen () jedoch eine Funktion ist, ist es etwas langsam, da der Funktionsaufruf viele Schritte durchläuft, z. B. Kleinbuchstaben (Anmerkung: Bezieht sich auf den Funktionsnamen in Kleinbuchstaben. PHP unterscheidet nicht zwischen Funktionsnamen in Groß- und Kleinbuchstaben ), Hash-Suche, Wird zusammen mit der aufgerufenen Funktion ausgeführt. In einigen Fällen können Sie den isset()-Trick verwenden, um die Ausführung Ihres Codes zu beschleunigen.

    (举例如下)  if (strlen($foo) < 5) { echo 'Foo is too short'; }
  • (与下面的技巧做比较)  if (!isset($foo[5])) { echo 'Foo is too short'; }

    Der Aufruf von isset() ist zufällig schneller als strlen(), da isset() im Gegensatz zu letzterem als Sprachkonstrukt bedeutet, dass seine Funktionssuche erfolgt und Kleinbuchstaben sind für die Ausführung nicht erforderlich. Das heißt, Sie verbringen tatsächlich nicht viel Aufwand damit, die Stringlänge im Code der obersten Ebene zu überprüfen.

  • Beim Ausführen des Inkrementierens oder Dekrementierens der Variablen $i ist $i++ langsamer als ++$i. Dieser Unterschied ist spezifisch für PHP und gilt nicht für andere Sprachen. Ändern Sie also bitte nicht Ihren C- oder Java-Code und erwarten Sie, dass er sofort schneller ist, da er sonst nicht funktioniert. ++$i ist schneller, da nur 3 Anweisungen (Opcodes) erforderlich sind, während $i++ 4 Anweisungen erfordert. Postincrement erstellt tatsächlich eine temporäre Variable, die anschließend erhöht wird. Das Präfix-Inkrement erhöht sich direkt auf den ursprünglichen Wert. Dies ist eine Form der Optimierung, wie sie vom PHP-Optimierer von Zend durchgeführt wird. Es empfiehlt sich, diese Optimierung im Hinterkopf zu behalten, da nicht alle Befehlsoptimierer die gleichen Optimierungen durchführen und es eine große Anzahl von Internetdienstanbietern (ISPs) und Servern gibt, auf denen keine Befehlsoptimierer installiert sind.

  • Es ist nicht notwendig, objektorientiert zu sein (OOP). Objektorientiert ist oft sehr teuer und jede Methode und jeder Objektaufruf verbraucht viel Speicher.

  • Es ist nicht notwendig, Klassen zu verwenden, um alle Datenstrukturen zu implementieren, Arrays sind ebenfalls nützlich.

  • Unterteilen Sie die Methode nicht zu sehr, sondern überlegen Sie genau, welchen Code Sie wirklich wiederverwenden möchten?

  • Sie können den Code bei Bedarf jederzeit in Methoden aufteilen.

  • Versuchen Sie, eine große Anzahl der in PHP integrierten Funktionen zu verwenden.

  • Wenn Ihr Code viele zeitaufwändige Funktionen enthält, können Sie erwägen, diese als C-Erweiterungen zu implementieren.

  • Profilieren Sie Ihren Code. Der Prüfer verrät Ihnen, welche Teile des Codes wie viel Zeit in Anspruch nehmen. Der Xdebug-Debugger umfasst Inspektionsprogramme, die die Gesamtintegrität Ihres Codes bewerten und Engpässe in Ihrem Code aufdecken.

  • mod_zip kann als Apache-Modul verwendet werden, um Ihre Daten sofort zu komprimieren und das Datenübertragungsvolumen um 80 % zu reduzieren.

  • Wenn file_get_contents anstelle von file, fopen, feof, fgets und anderen Methodenreihen verwendet werden kann, versuchen Sie, file_get_contents zu verwenden, da dies viel effizienter ist! Beachten Sie jedoch das PHP-Versionsproblem von file_get_contents, wenn Sie eine URL-Datei öffnen.

  • Führen Sie so wenige Dateioperationen wie möglich aus, obwohl die Dateioperationseffizienz von PHP nicht gering ist 🎜 >

  • Optimieren Sie die Select SQL-Anweisung und führen Sie so wenige Einfüge- und Aktualisierungsvorgänge wie möglich durch (ich wurde für die Aktualisierung kritisiert
  • So viel wie möglich Es ist möglich). um PHP-interne Funktionen zu verwenden (aber um eine Funktion zu finden, die es in PHP nicht gibt, habe ich Zeit verschwendet, die eine benutzerdefinierte Funktion hätte schreiben können, eine Frage der Erfahrung!);
  • Deklarieren Sie keine Variablen innerhalb der Schleife, insbesondere keine großen Variablen: Objekte (das scheint nicht nur in PHP ein Problem zu sein, oder?);

  • Mehrdimensionales Array Versuchen Sie, Zuweisungen nicht in Schleifen zu verschachteln.

  • Verwenden Sie keine regulären Ausdrücke, wenn Sie die internen String-Manipulationsfunktionen von PHP verwenden können > foreach ist effizienter. Versuchen Sie, foreach anstelle von while und for-Schleifen zu verwenden.

  • "Verwenden Sie i+=1 anstelle von i=i+1. Es entspricht den Gewohnheiten von c/ c++ und ist effizienter";

  • Für globale Variablen sollten Sie sie nach der Verwendung deaktivieren();

Das obige ist der detaillierte Inhalt vonZusammenfassung der PHP-Codeoptimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn