Heim  >  Artikel  >  Backend-Entwicklung  >  53 Möglichkeiten zur Optimierung von PHP-Code

53 Möglichkeiten zur Optimierung von PHP-Code

小云云
小云云Original
2018-03-28 13:48:051097Durchsuche

Dieser Artikel zeigt Ihnen hauptsächlich 53 Möglichkeiten zur Optimierung von PHP-Code. Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Zeichenfolgen einzuschließen. Da PHP nach Variablen in Zeichenfolgen sucht, die von doppelten Anführungszeichen umgeben sind, ist dies in einfachen Anführungszeichen nicht möglich. Hinweis: Nur Echo kann dies tun, es handelt sich um eine „Funktion“, die mehrere Zeichenfolgen als Parameter annehmen kann (Anmerkung: PHP-Handbuch. Es wird gesagt, dass Echo eine Sprachstruktur, keine echte Funktion, daher wird die Funktion in doppelte Anführungszeichen gesetzt).
1. 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.
2. $row['id'] ist 7-mal schneller als $row[id].
3. Echo ist schneller als print und verwendet mehrere Echo-Parameter (Anmerkung: bezieht sich auf die Verwendung von Kommas anstelle von Punkten) anstelle der Zeichenfolgenverkettung, wie z. B. echo $str1, $str2.
4. Bestimmen Sie die maximale Anzahl von Schleifen, bevor Sie die for-Schleife ausführen. Verwenden Sie stattdessen am besten foreach.
5. Heben Sie die Registrierung nicht verwendeter Variablen auf, insbesondere großer Arrays, um Speicher freizugeben.
6. Vermeiden Sie die Verwendung von __get, __set, __autoload.
7. require_once() ist teuer.
8. 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.
9. Wenn Sie wissen möchten, wann das Skript ausgeführt wird (Anmerkung: Das heißt, der Server empfängt die Client-Anfrage), ist es besser, $_SERVER[‘REQUEST_TIME’] als time() zu verwenden.
10. Funktionen ersetzen reguläre Ausdrücke, um dieselbe Funktion zu vervollständigen.
11. Die Funktion str_replace ist schneller als die Funktion preg_replace, aber die Funktion strtr ist viermal effizienter als die Funktion str_replace.
12. 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 ein Zeichen und nicht nur eine Zeile ist akzeptiert Arrays als Parameter zum Abfragen und Ersetzen.
13. Es ist besser, eine selektive Verzweigungsanweisung (Übersetzungsanmerkung: Groß-/Kleinschreibung wechseln) zu verwenden, als mehrere if-else-if-Anweisungen zu verwenden.
14. Die Verwendung von @ zum Blockieren von Fehlermeldungen ist sehr ineffizient, äußerst ineffizient.
15. Das Öffnen des mod_deflate-Moduls von Apache kann die Browsing-Geschwindigkeit von Webseiten verbessern.
16. Die Datenbankverbindung sollte nach Beendigung der Verwendung geschlossen werden und keine langen Verbindungen verwenden.
17. Fehlermeldungen sind teuer.
18. Das Erhöhen lokaler Variablen in Methoden ist am schnellsten. Fast so schnell wie der Aufruf lokaler Variablen in einer Funktion.
19. Das Erhöhen einer globalen Variablen ist zweimal langsamer als das Erhöhen einer lokalen Variablen.
20. Das Erhöhen einer Objekteigenschaft (z. B. $this->prop++) ist dreimal langsamer als das Erhöhen einer lokalen Variablen.
21. Das Erhöhen einer undefinierten lokalen Variablen ist 9 bis 10 Mal langsamer als das Erhöhen einer vordefinierten lokalen Variablen.
22. Das bloße Definieren einer lokalen Variablen, ohne sie in einer Funktion aufzurufen, verlangsamt ebenfalls die Geschwindigkeit (im gleichen Maße wie das Erhöhen einer lokalen Variablen). PHP wird wahrscheinlich prüfen, ob eine globale Variable vorhanden ist.
23. 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 Änderung in der Leistung.
24. Methoden in abgeleiteten Klassen werden schneller ausgeführt als dieselben Methoden, die in Basisklassen definiert sind.
25. Der Aufruf einer leeren Funktion mit einem Parameter dauert genauso lange wie die Durchführung von 7 bis 8 lokalen Variablen-Inkrementierungsoperationen. Ein ähnlicher Methodenaufruf erfordert fast 15 Inkremente lokaler Variablen.
26. 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.
27. 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.
28. Versuchen Sie, so viel wie möglich zwischenzuspeichern. Sie können memcached verwenden. Memcached ist ein leistungsstarkes Speicherobjekt-Caching-System, mit dem dynamische Webanwendungen beschleunigt und die Datenbanklast reduziert werden kann. Das Zwischenspeichern von OP-Codes ist nützlich, damit Skripte nicht für jede Anfrage neu kompiliert werden müssen.
29. Wenn Sie eine Zeichenfolge bearbeiten und überprüfen müssen, ob ihre Länge bestimmte Anforderungen erfüllt, verwenden Sie natürlich die Funktion strlen(). Diese Funktion wird recht 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.
(Beispiel unten)
if (strlen($foo) < 5) { echo „Foo is too short“$$ }
(Vergleichen Sie mit der folgenden Technik)
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 ein Sprachkonstrukt ist Seine Ausführung erfordert keine Funktionssuche und keine Kleinschreibung von Buchstaben. Das heißt, Sie verbringen tatsächlich nicht viel Aufwand damit, die Stringlänge im Code der obersten Ebene zu überprüfen.
34. Beim Ausführen der Inkrementierung oder Dekrementierung 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. Nach dem Inkrementieren wird tatsächlich eine temporäre Variable erstellt, die anschließend inkrementiert 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, die nicht über Befehlsoptimierer verfügen.
35. Nicht alles muss objektorientiert sein (OOP). Objektorientiert ist oft sehr teuer und jede Methode und jeder Objektaufruf verbraucht viel Speicher.
36. Es ist nicht notwendig, Klassen zu verwenden, um alle Datenstrukturen zu implementieren.
37. Unterteilen Sie die Methoden nicht zu sehr. Überlegen Sie genau, welchen Code Sie wirklich wiederverwenden möchten.
38. Sie können den Code jederzeit in Methoden aufteilen, wenn Sie ihn benötigen.
39. Versuchen Sie, eine große Anzahl integrierter PHP-Funktionen zu verwenden.
40. Wenn der Code viele zeitaufwändige Funktionen enthält, können Sie erwägen, diese mithilfe von C-Erweiterungen zu implementieren.
41. Profilieren Sie Ihren Code. Der Prüfer verrät Ihnen, welche Teile des Codes wie viel Zeit in Anspruch nehmen. Der Xdebug-Debugger umfasst Inspektionsroutinen, die die Gesamtintegrität Ihres Codes bewerten und Engpässe in Ihrem Code aufdecken.
42. mod_zip kann als Apache-Modul verwendet werden, um Ihre Daten sofort zu komprimieren und das Datenübertragungsvolumen um 80 % zu reduzieren.
43. 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 möglich. Führen Sie Dateioperationen so wenig wie möglich aus.
45 Führen Sie unter diesen Umständen so wenige Einfügungs- und Aktualisierungsvorgänge wie möglich durch (ich wurde beim Update kritisiert);
46 Verwenden Sie so viele PHP-interne Funktionen wie möglich (aber ich habe viel Geld verschwendet, nur um eine Funktion zu finden, die dies tut). nicht in PHP vorhanden. Das Schreiben einer benutzerdefinierten Funktion ist eine Frage der Erfahrung. 47. Deklarieren Sie keine Variablen innerhalb der Schleife, insbesondere keine großen Variablen Problem in PHP, oder?);
48. Versuchen Sie, keine verschachtelten Zuweisungen in mehrdimensionalen Arrays zu verwenden. Foreach ist effizienter. Versuchen Sie, foreach-Schleifen zu verwenden.
51 Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen.
52 entspricht den Gewohnheiten von c/c++ und ist effizienter . Verwenden Sie absolute Pfade in Includes und Requires, damit die Analyse des Pfads weniger Zeit in Anspruch nimmt. 2. Verwenden Sie keine Funktionen in Schleifen, z. B. For($x=0; $x < count($ array); $x), die Funktion count() berechnet zuerst außerhalb ;
3. Verwenden Sie die Funktion error_reporting(0), um zu verhindern, dass Benutzern potenziell vertrauliche Informationen angezeigt werden. Idealerweise sollte die Fehlerberichterstattung in der php.ini-Datei vollständig deaktiviert sein. Wenn Sie jedoch einen gemeinsam genutzten virtuellen Host verwenden und php.ini nicht ändern können, fügen Sie besser die Funktion error_reporting(0) hinzu und fügen Sie sie in die erste Zeile jeder Skriptdatei ein (oder verwenden Sie require_once(), um sie zu laden). . Dies kann wirksam verhindern, dass sensible SQL-Abfragen und -Pfade angezeigt werden, wenn Fehler auftreten.
4. Es ist verboten, zu viele Schleifen innerhalb von Schleifen zu verwenden.
5. Dies ist verboten innerhalb einer Schleife ausführen Für verwandte Abfrageanweisungen dürfen Sie dies nicht tun, es sei denn, es ist absolut notwendig
6. Versuchen Sie, Zeichenfolgen mit einfachen Anführungszeichen zu verbinden
7. Reduzieren Sie Variablenkopiervorgänge so weit wie möglich. Zum Beispiel: $description = $_POST['description'];
8 Wenn es zu viele if/else gibt, verwenden Sie so oft wie möglich switch/case anstelle von if/else. Kann den Code prägnanter machen
9. Das Aktivieren des Caching-Mechanismus hilft, die Leistung zu verbessern und gleichzeitig die MySQL-Last zu reduzieren
10. Gzip-Komprimierung aktivieren

Verwandte Empfehlungen:


Optimierung von PHP-Codierungskenntnissen

Das obige ist der detaillierte Inhalt von53 Möglichkeiten zur Optimierung von PHP-Code. 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