Die PHP-Sprache ist bekannt für ihre Einfachheit und leichte Erlernbarkeit, aber einige Anfänger schreiben oft PHP-Code mit geringer Leistung, was die Betriebseffizienz des gesamten Systems ernsthaft beeinträchtigen kann. In diesem Artikel haben wir einige PHP-Programmiertipps und Optimierungstechniken für alle zusammengestellt. Wir hoffen, dass PHP-Anfänger die folgenden Bearbeitungstipps sorgfältig lesen und gute PHP-Programmiergewohnheiten entwickeln!

63 PHP-Programmiertipps
- 1. Verwenden Sie so viele PHP-integrierte Funktionen wie möglich.
- 2. Verwenden Sie
echoanstelle vonprint, und verwenden Sieechomehrere Parameter (Anmerkung des Übersetzers: Kommas statt Punkte) anstelle von String-Verkettung, zum Beispiel
echo $str1,$str2;
3. Zerlegen Sie Methoden nicht zu sehr; überlegen Sie sorgfältig, welchen Code Sie tatsächlich wiederverwenden möchten.4. Während der Ausführungfor4. Vor der Ausführungeiner Schleife, bestimmen Sie die maximale Anzahl an Iterationen; berechnen Sie das Maximum nicht bei jeder Iteration.5. Unset nicht verwendete Variablen, insbesondere große Arrays, um Speicher freizugeben.
7, $row['id']Die Effizienz von$row[id]ist 7-mal so hoch wie die von8. Verwenden Sie vollständige Pfade beim Einbinden von Dateien; es dauert weniger Zeit, Betriebssystempfade aufzulösen.9. Wenn Sie wissen möchten, wann das Skript mit der Ausführung begonnen hat (Anmerkung des Übersetzers: d. h., wenn der Server die Client-Anfrage empfängt), verwenden Sie$_SERVER['REQUEST_TIME']ist besser alstime()。10. Funktionen können reguläre Ausdrücke ersetzen, um die gleiche Funktionalität zu erreichen.str_replaceFunktion ist schneller alspreg_replaceFunktion, aberstrtrDie Effizienz der Funktion iststr_replaceviermal so hoch wie die der Funktion.11. Achten Sie auf die Code-Einrückung.12. Wenn eine String-Ersetzungsfunktion Arrays oder Zeichen als Parameter akzeptieren kann und die Parameterlänge nicht zu lang ist, erwägen Sie, ein zusätzliches Ersetzungs-Codesegment zu schreiben, sodass jedes Mal ein einzelnes Zeichen als Parameter übergeben wird, anstatt nur eine Codezeile zu schreiben, die ein Array als Such- und Ersetzungsparameter akzeptiert.13. Verwenden Sie eine switch-Anweisung (Anmerkung des Übersetzers: d. h.,switch case) anstelle von mehrerenif,else ifAnweisungen verwendet werden kann.14. Die Verwendung von @ zum Unterdrücken von Fehlermeldungen ist sehr ineffizient.15. Aktivieren Sie das Apache-Modul mod_deflate.16. Datenbankverbindungen sollten geschlossen werden, wenn sie nicht mehr verwendet werden.18. Fehlermeldungen sind teuer.19. Versuchen Sie, Funktionen in for-Schleifen nicht zu verwenden, zum Beispielfor ($x=0; $x < count($array); $x)count() wird bei jeder Iteration aufgerufen.20. Das Inkrementieren einer lokalen Variablen innerhalb einer Methode ist am schnellsten. Es ist fast genauso schnell wie das Aufrufen einer lokalen Variablen innerhalb einer Funktion.21. Das Inkrementieren einer globalen Variablen ist 2-mal langsamer als das Inkrementieren einer lokalen Variablen.22. Inkrementieren einer Objekteigenschaft (z. B.$this->prop++) ist 3-mal langsamer als das Inkrementieren einer lokalen Variablen.23. Das Inkrementieren einer nicht definierten lokalen Variablen ist 9- bis 10-mal langsamer als das Inkrementieren einer vordefinierten lokalen Variablen.24. Allein das Definieren einer lokalen Variablen, ohne sie in einer Funktion aufzurufen, verlangsamt ebenfalls die Geschwindigkeit (in einem Maß, das dem Inkrementieren einer lokalen Variablen entspricht). PHP prüft wahrscheinlich, ob eine globale Variable existiert.25. Methodenaufrufe scheinen nicht mit der Anzahl der in der Klasse definierten Methoden zusammenzuhängen, weil ich 10 Methoden hinzugefügt habe (sowohl vor als auch nach dem Testen der Methode), aber die Leistung änderte sich nicht.26. Methoden in abgeleiteten Klassen laufen schneller als dieselben in der Basisklasse definierten Methoden.27. Der Aufruf einer leeren Funktion mit einem Parameter dauert etwa genauso lange wie 7 bis 8 Inkrementierungen einer lokalen Variablen. Ein ähnlicher Methodenaufruf dauert fast 15 Inkrementierungen einer lokalen Variablen.28. Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Zeichenketten einzuschließen; das ist schneller. Denn PHP sucht in Zeichenketten, die von doppelten Anführungszeichen eingeschlossen sind, nach Variablen, aber nicht in einfachen Anführungszeichen. Natürlich können Sie das nur tun, wenn Sie keine Variablen in die Zeichenkette aufnehmen müssen.29. Wenn Sieechomehrere Zeichenketten ausgeben, verwenden Sie Kommas anstelle von Punkten, um Zeichenketten zu trennen; das ist schneller.30. Apache braucht 2 bis 10 Mal länger, um ein PHP-Skript zu parsen, als um eine statische HTML-Seite zu parsen. Versuchen Sie, statische HTML-Seiten häufiger und Skripte seltener zu verwenden.31. Wenn Skripte nicht gecacht werden können, werden sie bei jedem Aufruf neu kompiliert. Die Einführung eines PHP-Caching-Mechanismus kann die Leistung normalerweise um 25% bis 100% verbessern und den Kompilierungsaufwand eliminieren.32. Führen Sie so viel Caching wie möglich durch; Sie können memcached verwenden. memcached ist ein hochleistungsfähiges, verteiltes Speicherobjekt-Caching-System, mit dem dynamische Webanwendungen beschleunigt und die Datenbanklast reduziert werden kann. Opcode-Caching ist sehr nützlich, sodass Skripte nicht für jede Anfrage neu kompiliert werden müssen.33. Wenn Sie Zeichenketten bearbeiten und prüfen müssen, ob ihre Länge bestimmten Anforderungen entspricht, würden Sie natürlichstrlen()Funktion. Diese Funktion wird ziemlich schnell ausgeführt, weil sie keine Berechnung durchführt, sondern lediglich die bekannte Zeichenkettenlänge zurückgibt, die in der zval-Struktur gespeichert ist (der in C integrierten Datenstruktur, die zum Speichern von PHP-Variablen verwendet wird). Da jedochstrlen()eine Funktion ist, wird sie etwas langsam sein, weil ein Funktionsaufruf viele Schritte durchläuft, wie etwa Umwandlung in Kleinbuchstaben (Anmerkung des Übersetzers: Damit ist gemeint, dass der Funktionsname in Kleinbuchstaben umgewandelt wird; PHP unterscheidet nicht zwischen Groß- und Kleinschreibung bei Funktionsnamen), Hash-Lookup, und diese werden zusammen mit der aufgerufenen Funktion ausgeführt. In manchen Fällen können Sieisset()Technik, 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"; }
34. Wenn Sie eine Klassenmethode alsstaticdefinieren können, versuchen Sie, sie alsstaticzu definieren; ihre Geschwindigkeit wird um fast das Vierfache steigen.35. Verwenden Sie nichtarray_key_exists, verwendenisset, um zu prüfen, ob ein Schlüssel in einem Array existiert.36. Vermeiden Sie die Verwendung von__set,__getmagische Methoden wie37. Verwenden Sieinclude/requireanstelle voninclude_once/require_once, und versuchen Sie, absolute Pfade zu verwenden.38. Packen Siecount/strlen/sizeofusw. nicht inforSchleifenbedingungen.39. Verwenden Sie möglichstforeachanstelle vonfor/while40. Wenn eine Zeichenkette Variablen enthält, verwenden Sie doppelte Anführungszeichen anstelle von einfachen Anführungszeichen, z. B.
echo "hi, $name, nice to meet you";
41. Verwenden Siefreadum kleine Dateien zu lesen, verwenden Siefile_get_contentsum große Dateien zu lesen, und verwenden Siefseekfür sehr große Dateien.ip2long()undlong2ip()42. Verwenden SieFunktion, um eine IP-Adresse in eine Ganzzahl zur Speicherung umzuwandeln. Das erleichtert die Berechnung, ob eine bestimmte Adresse innerhalb eines Bereichs liegt, und beschleunigt außerdem Suche und Sortierung.checkdnsrr()43. Wenn Sie eine E-Mail-Adresse validieren, verwenden SieFunktion, um zu überprüfen, ob die Domain existiert. Diese eingebaute Funktion kann bestätigen, dass die angegebene Domain in eine IP-Adresse aufgelöst werden kann.mysql_*44. Ziehen Sie in Betracht,mysqli_*Serienfunktionen zugunsten der verbessertenSerienfunktionen aufzugeben.45. Lernen Sie, den ternären Operator zu lieben.46. Wenn Sie das Gefühl haben, dass es in Ihrem Projekt einen wiederverwendbaren Teil gibt, prüfen Sie, ob PEAR ihn bereits hat, bevor Sie die nächste Codezeile schreiben. Dieses Online-Repository enthält mehr als 400 wiederverwendbare Programmbausteine, die sofort in Ihrem Programm verwendet werden können. Wenn Ihr Projekt nicht wirklich außergewöhnlich ist, finden Sie immer ein PEAR-Paket, das Ihnen hilft, Zeit zu sparen.highlight_file()47. Verwenden Sieum automatisch formatierten, schönen Quellcode auszugeben.error_reporting(0)48. Verwenden Siephp.iniFunktion, um zu verhindern, dass Benutzer potenziell sensible Fehlerinformationen sehen. Idealerweise sollte dies auf einem Produktionsserver vollständig deaktiviert sein inerror_reporting(0)
. Aber wenn Sie einen gemeinsam genutzten Webserver verwenden, haben Sie keine eigene php.ini-Datei; in diesem Fall ist Ihre beste Wahl, hinzuzufügengzcompress()undgzuncompress()49. Bevor Sie sehr große Zeichenketten in der Webdatenbank speichern, verwenden Sieum Strings explizit zu komprimieren/dekomprimieren.50. Verwenden Sie die Methode der Parameterübergabe per "Referenz", um mehrere Rückgabewerte von einer Funktion zu erhalten.magic_quotes51. Verstehen Sie die Gefahren von "Magic Quotes" und SQL-Injection vollständig. Die einfachste Möglichkeit, SQL-Injection zu verhindern: Setzen Sie in php.inimysql_real_escape_string()auf On, und verwenden SieFunktion zum Escapen.52. Datenbankverbindungen sollten geschlossen werden, wenn sie nicht mehr verwendet werden; verwenden Sie keine persistenten Verbindungen.
53. Bei globalen Variablen: Verwenden Sie unset() für sie, sobald Sie sie nicht mehr verwenden.htmlentities()oderhtmlspecialchars()54. Vertrauen Sie keinen von Benutzern übermittelten Daten; verwenden Sie immer
es zuerst zu escapen.$i55. Bei der Durchführung von$i++Inkrementierung oder Dekrementierung an einer Variable,++$iist 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 nicht, dass er sofort schneller wird; das wird er nicht.$i++ist schneller, weil es nur 3 Anweisungen (Opcodes) benötigt,benötigt 4 Anweisungen. Post-Inkrement erzeugt tatsächlich eine temporäre Variable, die dann inkrementiert wird. Pre-Inkrement inkrementiert direkt den ursprünglichen Wert.56. Nicht alles muss objektorientiert (OOP) sein. OOP hat oft hohen Overhead; jeder Methoden- und Objektaufruf verbraucht viel Speicher.57. Wenn es viele zeitaufwändige Funktionen in Ihrem Code gibt, können Sie in Erwägung ziehen, sie als C-Erweiterungen zu implementieren.59. mod_zip kann als Apache-Modul verwendet werden, um Ihre Daten im laufenden Betrieb zu komprimieren, und kann das Datenübertragungsvolumen um 80% reduzieren.60. Versuchen Sie, Dateioperationen so weit wie möglich zu minimieren, obwohl PHPs Dateioperationseffizienz auch nicht niedrig ist.61. OptimierungSelect SQLSatz, gehen Sie so wenig wie möglich vor, wenn möglich.Insert、UpdateAktion62. Deklarieren Sie keine Variablen innerhalb von Schleifen, insbesondere keine großen Variablen: Objekte (Das scheint nicht nur in PHP ein Problem zu sein, oder?)63. Versuchen Sie, verschachtelte Schleifenzuweisungen für mehrdimensionale Arrays zu vermeiden.
64、……
Verwandte Ressourcen