In diesem Artikel geht es um die Analyse und Optimierung von PHP-Leistungsproblemen. Interessierte Freunde können vorbeikommen und mehr erfahren!
Unter welchen Umständen treten PHP-Leistungsprobleme auf? Empfohlenes Tutorial: PHP-Video-Tutorial
1 Unsachgemäße Verwendung der PHP-Syntax
2 Die PHP-Sprache kann Dinge nicht tun, in denen sie nicht gut ist
3 Die mit der PHP-Sprache verbundenen Dienste sind nicht leistungsstark
4 PHP selbst hat Mängel
5 Probleme, von denen ich auch nichts weiß
Analyse von Leistungsproblemen
PHP-Leistungsprobleme machen 10 % des gesamten Projekts aus Leistungsprobleme Der Anteil beträgt weniger als 50 %
Leistungsoptimierungsprojekte, beschränken Sie sich nicht auf die Optimierung von PHP
PHP-Leistungsoptimierung auf Sprachebene
|
|
PHP-Peripheriegeräte Die Leistungsoptimierung des Problems |
| Einführung
Apache Benchmark (ab) (Sie können es selbst herunterladen)
ab ist eine von Apache bereitgestellte Stresstestsoftware, die bei der Installation enthalten ist Apache-Server.
Wie benutzt man? ./ab -n1000 -c100 http://www.baidu.com/ -n Anzahl der Anfragen
— -c Anzahl der Parallelität
URL Target Stresstest-Adresse
Demonstration der Verwendung des PHP-Stresstest-Tools
Konzentrieren Sie sich hauptsächlich auf as möglichst viele Parallelitäten pro Sekunde
Die Anfrage benötigt so wenig Zeit wie möglich
Mehr PHP-eigene Fähigkeiten nutzen Optimierung: Weniger Code schreiben, mehr PHP-eigene Fähigkeiten nutzen
Leistungsprobleme: Selbst Der Code weist viel Redundanz, schlechte Lesbarkeit und geringe Leistung auf
Warum ist die Leistung gering?
PHP-Code muss für jede Anfrage kompiliert und geparst werden, was kostspielig ist.
Gute Methode:
Mehr Nutzen aus den integrierten variablen Konstantenfunktionen von PHP
Codevorbereitung für PHPs eigenen Fähigkeitsleistungstest
PHP-Code-Ausführungsprozess
*.php ---Scanner---> Exprs -----Parser--->Opcodes---Exec--->Output
Leistungstest zwischen in PHP integrierten Funktionen
Optimierungspunkt: Leistungsvor- und -nachteile von in PHP integrierten Funktionen
Situationsbeschreibung : Integrierte PHP-Funktionen, Es gibt immer noch Unterschiede in der Blocklangsamkeit zwischen
Gute Vorschläge: Erfahren Sie mehr über die zeitliche Komplexität der integrierten PHP-Funktionen
Codetest für Leistungstests zwischen PHP-integrierten Funktionen in Funktionen
isset($arr[$i]); //Durchschnittlich 50ms
array_key_exists($i,$arr);//Durchschnittlich 85ms
PHP reduzieren Verwendung von Magic-Funktionen
Situationsbeschreibung: Die von PHP bereitgestellten Magic-Funktionen weisen eine schlechte Leistung auf
Warum ist die Leistung gering? Um PHP-Programmierern Ärger zu ersparen, hat die PHP-Sprache viel für Sie getan
Gute Methoden Vermeiden Sie so weit wie möglich die Verwendung magischer PHP-Funktionen
PHP deaktiviert den Fehlerunterdrücker
@Die eigentliche Logik
Vor dem Anfang des Codes und nach dem Ende hinzufügen. Opcode ignoriert Fehler
php -dv|d.active=1 -dv|d.execute=0 at.php
Ich möchte nur nachsehen und möchte nicht wirklich ausführen
PHP – Angemessene Nutzung von Speicher und regulären Ausdrücken
Optimierungspunkt: Angemessene Nutzung von Speicher
PHP verfügt über einen Speicher-Recycling-Mechanismus, um das Endergebnis zu garantieren, aber bitte gehen Sie auch sorgfältig mit dem Speicher um
Guter Rat
Verwenden Sie unset(), um ungenutzten Speicher rechtzeitig freizugeben (Hinweis: unset() kann nicht abgemeldet werden können)
Versuchen Sie, so wenig wie möglich zu verwenden. Verwenden Sie reguläre Ausdrücke.
Der Overtrack für reguläre Ausdrücke ist relativ groß.
Guter Vorschlag:
Verwenden Sie String-Verarbeitungsfunktionen, um dieselbe Logik zu implementieren
PHP – Vermeiden Sie Berechnungen innerhalb der Schleife
Optimierungspunkt: Vermeiden Sie Berechnungen innerhalb der Schleife
Situationsbeschreibung:
Berechnungsformeln innerhalb der Schleife werden wiederholt berechnet
Codebeispiel:
& für Szenarien
Geeignet für die Verbindung von Webservern und Hintergrunddiensten, UI-Präsentation
PHP – achten Sie darauf, Anführungszeichenketten als Schlüsselwerte zu verwenden
PHP behandelt Schlüsselwerte ohne Anführungszeichen als Konstanten, was zu einem Mehraufwand bei der Suche nach Konstanten führt
Strings in Anführungszeichen unbedingt als Schlüsselwerte verwenden
Analyse und Erklärung von Problemen rund um PHP
Was sind die Peripheriegeräte von PHP?
Linux-Betriebssystemumgebung PHP Festplatte (Dateispeicherung) Datenbank (z. B. MySQL) Caching-Netzwerk
Analyse der Auswirkungen von PHP-Peripheriegeräten auf PHP-Programme
Reduzierung von DateitypoperationenOverhead-Reihenfolge gängiger PHP-Szenarien:Lesen und Datenträger schreiben Datenbank lesen und schreiben Netzwerkdaten lesen und schreiben
Speicher lesen und schreiben< Datenträger lesen und schreiben
Reduzieren Sie von PHP initiierte Netzwerkanfragen
Fallstricke von Netzwerkanfragen:
1 Unsichere Faktoren der Schnittstelle der anderen Partei
2 Netzwerkstabilitätsleistung
Netzwerkanfragen optimieren
1 Timeout festlegen
Verbindungs-Timeout 200 ms
Lese-Timeout 800 ms
Schreib-Timeout 500 ms
2 Serielle Anfragen parallelisieren 1 curl_multi_ *() 2 Swoole-Erweiterung verwenden
curl_multi_*() ist nicht sehr gut, da es auf der längsten Rückgabezeit basiert
curl_multi_add_handle Fügen Sie dem Curl-Stapel ein separates Curl-Handle hinzu session
curl_multi_close Eine Gruppe von cURL-Handles schließen
curl_multi_exec Eine Unterverbindung des aktuellen cURL-Handles
ausführencurl_multi_getcontent Wenn CURLOPT_RETURNTRANSFER gesetzt ist, den erhaltenen Ausgabetextstrom zurückgeben
curl_multi_info_read Die relevanten Übertragungsinformationen der aktuell analysierten cURL abrufen
curl_multi_remove_handle Eine Handle-Ressource in der Handle-Ressource der Curl-Batchverarbeitung entfernen
curl_multi_ select wait for all Active Verbindungen im cURL-Batch
curl_multi_setopt Legen Sie eine Option für das cURL-Multi-Handle fest
curl_multi_strerror – Rückgabezeichenfolge, die den Fehlercode beschreibt
Empfohlene Swoole-Erweiterung
Vor- und Nachteile der Komprimierung der PHP-Ausgabe
Komprimierung der Ausgabe der PHP-Schnittstelle
Wie komprimiere ich?
Verwenden Sie Gzip
Vorteile: Fördert unsere Datenausgabe, der Client kann Daten schneller abrufen
Nachteile: Zusätzlicher CPU-Overhead
PHP-Cache-Wiederverwendung
Unter welchen Umständen sollte der Ausgabeinhalt zwischengespeichert werden?
Mehrere Anfragen, Inhalt bleibt unverändert
Smarty-Tuning und überlappende Zeitfenster-Ideen
Smarty aktiviert Caching
Überlappende Zeitfenster-Ideen
Seriell:
Prozess1 Prozess2 Prozess3 Prozess4
Überlappende Zeitfenster:
Prozess1
Prozess2
Prozess3
Prozess4
Der nächste Wenn a Die Aufgabe hängt nicht stark von der vorherigen Aufgabe ab. Sie können die Überlappungszeit verwenden.
PHP-Bypass-Verarbeitungslösung
Im Allgemeinen normal: x.php -> Prozess1 ->Prozess2 ->Prozess4->
Bypass-Lösung: x.php ->Prozess1 ->Prozess3 ( Gleichzeitig) -->Process4->
Das obige ist der detaillierte Inhalt vonAnalyse + Optimierung von PHP-Leistungsproblemen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!