Heim >Backend-Entwicklung >PHP-Problem >So ändern Sie die Leistung einer PHP-Website

So ändern Sie die Leistung einer PHP-Website

藏色散人
藏色散人Original
2022-10-25 09:28:271206Durchsuche

Methoden zum Ändern der Leistung von PHP-Websites: 2. Bildserver trennen; 4. Cache einrichten; 6. Lastausgleichstechnologie verwenden; . Optimieren Sie das Schreiben von Code usw.

So ändern Sie die Leistung einer PHP-Website

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.

Wie ändere ich die Leistung einer PHP-Website?

Lösung für die Optimierung großer PHP-Websites

Die Optimierung der Website-Leistung ist für große Websites sehr wichtig. Eine langsame Website-Zugriffsgeschwindigkeit führt zu einer hohen Absprungrate Einfach zu lösen, aber wie kann die Gesamtleistung bei großen Websites mit vielen Spalten und großen Bildern und Bildern optimiert werden? 1. Strategien zur Leistungsverbesserung für große Websites Die Verwendung statischer Seiten ist die einfachste und tatsächlich effektivste Methode, um dies zu erreichen.

2. Bildservertrennung Wie wir alle wissen, verbrauchen Bilder bei Webservern, sei es Apache, IIS oder andere Container, die meisten Ressourcen, daher ist es für uns notwendig, Bilder von Seiten zu trennen groß angelegt Dies ist eine Strategie, die alle Websites übernehmen werden. Sie verfügen alle über unabhängige oder sogar mehrere Bildserver. Eine solche Architektur kann den Druck auf das Serversystem, das Seitenzugriffsanfragen bereitstellt, verringern und sicherstellen, dass das System nicht aufgrund von Bildproblemen abstürzt. Auf dem Anwendungsserver und dem Bildserver können verschiedene Konfigurationsoptimierungen durchgeführt werden. Bei der Konfiguration von ContentType kann Apache beispielsweise so wenige LoadModules wie möglich unterstützen, um einen höheren Systemverbrauch und eine höhere Ausführungseffizienz sicherzustellen.

3. Datenbankcluster, Datenbanktabellen-Hashing

Große Websites verfügen über komplexe Anwendungen, und diese Anwendungen müssen mit einer großen Anzahl von Zugriffen konfrontiert werden. Zu diesem Zeitpunkt wird ein Engpass sichtbar Die Datenbank wird bald aus der Anwendung herauswachsen, daher müssen wir Datenbank-Clustering oder Datenbanktabellen-Hashing verwenden.

In Bezug auf Datenbankcluster verfügen viele Datenbanken über ihre eigenen Lösungen, und der häufig verwendete Master/Slave von MySQL ist eine ähnliche Lösung.

  Cluster verwenden normalerweise CDN-, GSBL- und DNS-Lastausgleichstechnologie. Jede Region verfügt beispielsweise über eine Reihe von Front-End-Servern nutzt DNS-Last-Technologie, alle Kanäle teilen sich einen Front-End-Server-Cluster.

Bibliothekstabellen-Hashing ist eine häufig verwendete und effektivste Lösung.

Wir installieren Geschäfts- und Anwendungs- oder Funktionsmodule in der Anwendung, um die Datenbank zu trennen. Verschiedene Module entsprechen verschiedenen Datenbanken oder Tabellen und führen dann kleinere Datenbank-Hashings auf einer bestimmten Seite oder Funktion gemäß einer bestimmten Strategie durch, z. B. Benutzertabellen nach Benutzer-IDs gehasht, was die Systemleistung bei geringen Kosten verbessern kann und eine gute Skalierbarkeit aufweist. Das SOHU-Forum verwendet eine solche Architektur, um die Informationen der Forumbenutzer, Einstellungen, Beiträge und andere Informationen zu trennen und dann den Abschnitt und die ID zu verwenden, um eine große Datenbank und Tabelle entsprechend dem Sektor und der ID zu erstellen jederzeit eine kostengünstige Datenbank hinzuzufügen, um die Systemleistung zu ergänzen.

4. Caching

Jeder, der in der Technik arbeitet, ist auf das Wort Cache gestoßen, und Cache wird an vielen Stellen verwendet. Caching ist auch in der Website-Architektur und Website-Entwicklung sehr wichtig. Hier sprechen wir zunächst über die beiden grundlegendsten Caches. Erweitertes und verteiltes Caching werden später beschrieben. Was das architektonische Caching betrifft, weiß jeder, der mit Apache vertraut ist, dass Apache ein eigenes Caching-Modul bereitstellt, und Sie können auch das zusätzliche Squid-Modul zum Caching verwenden. Beide Methoden können die Zugriffsantwortfunktionen von Apache effektiv verbessern. Der unter Linux bereitgestellte Cache ist eine häufig verwendete Cache-Schnittstelle, die beispielsweise in der Webentwicklung verwendet werden kann. Darüber hinaus verfügt jede Sprache bei der Web-Sprachentwicklung grundsätzlich über das Cache-Modul von Pear, und Java ist mit .net noch nicht sehr vertraut, aber ich glaube, dass es vorhanden sein muss.

5. Spiegelung ist eine Methode, die häufig von großen Websites zur Verbesserung der Leistung und Datensicherheit verwendet wird. Die Spiegelungstechnologie kann die Unterschiede in den Benutzerzugriffsgeschwindigkeiten beheben, die durch verschiedene Netzwerkzugangsanbieter und Regionen verursacht werden, beispielsweise zwischen ChinaNet und EduNet Der Unterschied hat viele Websites dazu veranlasst, Spiegelseiten innerhalb des Bildungsnetzwerks einzurichten, und die Daten werden regelmäßig oder in Echtzeit aktualisiert.

6. Lastausgleich

Der Lastenausgleich wird eine High-End-Lösung für große Websites sein, um Zugriffe mit hoher Last und eine große Anzahl gleichzeitiger Anforderungen zu bewältigen. Die Lastausgleichstechnologie wird seit vielen Jahren entwickelt und es stehen viele professionelle Dienstleister und Produkte zur Auswahl.

2. Optimierung des PHP-Code-Schreibens:

1. Echo ist viel schneller als Print.

Beide Methoden drucken etwas auf der Seite, aber echo gibt keinen Wert zurück und print gibt bei Erfolg oder Misserfolg 0 oder 1 zurück.

2. include_once ist zeitaufwändiger als include.

Denn es muss überprüft werden, ob die Klasse, die Sie einbeziehen möchten, enthalten ist.

3. Achten Sie darauf, für lange Absatzzeichenfolgen einfache Anführungszeichen anstelle von doppelten Anführungszeichen zu verwenden.

Weil doppelte Anführungszeichen nach Variablen in der Zeichenfolge suchen. Zum Beispiel: echo ‚This is long string‘.$name ist viel schneller als echo ‚This is long string $name‘.

4. Verwenden Sie keine in Schleifen verschachtelten for-Schleifen.

5 Wenn die Funktion als statisch definiert werden kann, definieren Sie sie nicht als Mitgliedsfunktion.

6. Wenn Sie das Problem ohne die Verwendung regulärer Ausdrücke lösen können, verwenden Sie keine regulären Ausdrücke.

Reguläre Ausdrücke sind langsamer als die nativen Funktionen von PHP. Verwenden Sie beispielsweise str_replace anstelle von preg_replae.

7. Versuchen Sie, keine relativen Pfade zum Einschließen von Dateien zu verwenden.

Wenn Sie nach einer Datei in einem relativen Pfad suchen, durchsuchen Sie diese im aktuellen Verzeichnis und suchen dann der Reihe nach erneut. Dadurch wird das Auffinden von Dateien sehr langsam. Es ist am besten, zuerst eine Konstante wie WEB_ROOT zu definieren und diese Konstante dann zum Einbinden der Datei zu verwenden.

8. Das Kongruenzsymbol === ist schneller als die Gleichheit ==

                        und if (1 == '1′) gibt true zurück, if (0 == ") gibt ebenfalls true zurück, und wenn Sie Kongruenz verwenden Bei der Verwendung von Symbolen geben sowohl if(1 ==='1′) als auch if(0===“) false zurück. Daher ist es am besten, das Kongruenzsymbol zu verwenden, wenn Sie einige boolesche Variablen in Ihrem Programm erkennen müssen.

3. Es gibt die folgenden Methoden für thinkphp

1. Deaktivieren Sie den Debugging-Modus.

Da das System nach dem Deaktivieren des Debugging-Modus automatisch den Projektkompilierungscache generiert und das Schreiben von Protokollen deaktiviert, kann dies eine Menge reduzieren E/A-Ladeaufwand und Protokolle. Schreibaufwand.

2. Seitenkomprimierungsausgabe aktivieren

Ab Version 3.1 wurde der Konfigurationsparameter OUTPUT_ENCODE hinzugefügt, um die Seitenkomprimierungsausgabe zu steuern.

3. Aktivieren Sie das Caching

Durch die Installation des APC- oder Xcache-Cache in der Website-Bereitstellungsumgebung kann die Website-Leistung und die Speichernutzung effektiv verbessert werden. Es vermeidet wiederholte Kompilierungsvorgänge, indem es die kompilierten PHP-Daten im gemeinsam genutzten Speicher puffert, und kann den gepufferten kompilierten Code direkt verwenden, um die Geschwindigkeit Ihrer Seite zu erhöhen und die Serverlast zu reduzieren. APC) ist ein Open-Source-Cache-Tool für PHP, das den PHP-Zwischencode von Opcode zwischenspeichern kann.

4. Feldcache

Standardmäßig wird der Feldcache nach Abschluss der Entwicklung automatisch generiert, sodass die Änderungen an der Datenbank grundsätzlich geringer werden Die Kosten für jeden E/A-Overhead beim Lesen des Feldcaches. Die Methode zum Zusammenführen besteht darin, die entsprechende Feld-Cache-Datei unter Runtime/Data/_fields zu finden InnoDB hat jede Engine Vor- und Nachteile. MyISAM eignet sich für Anwendungen, die eine große Anzahl von Abfragen erfordern. Der Trend von InnoDB wird eine sehr komplexe Speicher-Engine sein, und für einige kleine Anwendungen wird sie langsamer sein als MyISAM. Aber es unterstützt „Zeilensperren“ und Transaktionen.

2. Optimieren Sie den Datentyp des Feldes Denken Sie an einen Grundsatz: Je kleiner die Spalte, desto schneller. Bei den meisten Datenbank-Engines sind Festplattenvorgänge wahrscheinlich der größte Engpass. Daher kann es in dieser Situation sehr hilfreich sein, Ihre Daten zu komprimieren, da dadurch der Zugriff auf die Festplatte verringert wird. Wenn eine Tabelle nur wenige Spalten hat (z. B. eine Wörterbuchtabelle, eine Konfigurationstabelle), gibt es keinen Grund, INT als Primärschlüssel zu verwenden. Es ist wirtschaftlicher, MEDIUMINT, SMALLINT oder einen kleineren TINYINT zu verwenden. Wenn Sie keine Zeiterfassung benötigen, ist es viel besser, DATE als DATETIME zu verwenden. Natürlich müssen Sie auch genügend Raum für Erweiterungen lassen. Punkt 3: Das Hinzufügen von Indizes zu Suchfeldern

ist nicht unbedingt der Hauptschlüssel oder das eindeutige Feld. Wenn es in Ihrer Tabelle ein Feld gibt, das Sie immer für die Suche verwenden, ist es am besten, es zu indizieren. Sofern es sich bei dem zu durchsuchenden Feld nicht um ein großes Textfeld handelt, sollten Sie einen Volltextindex erstellen.

4. Vermeiden Sie die Verwendung von Select *. Je mehr Daten aus der Datenbank gelesen werden, desto langsamer wird die Abfrage.

 Und wenn Ihr Datenbankserver und Ihr WEB-Server zwei unabhängige Server sind, erhöht dies auch die Last der Netzwerkübertragung. Auch wenn Sie alle Felder in der Datentabelle abfragen möchten, vermeiden Sie die Verwendung des Platzhalterzeichens *. Eine sinnvolle Verwendung der integrierten Feldausschlussdefinitionen kann hilfreicher sein.

5. Verwenden Sie ENUM anstelle von VARCHAR

Der ENUM-Typ ist sehr schnell und kompakt. Tatsächlich enthält es einen TINYINT, erscheint jedoch als Zeichenfolge. Auf diese Weise ist es ideal, dieses Feld zum Erstellen einiger Auswahllisten zu verwenden. Wenn beispielsweise die Werte von Feldern wie Geschlecht, ethnische Zugehörigkeit, Abteilung und Status begrenzt und fest sind, sollten Sie ENUM anstelle von VARCHAR verwenden.

6. Verwenden Sie wann immer möglich NOT NULL

Sofern Sie keinen ganz besonderen Grund haben, NULL-Werte zu verwenden, sollten Sie Ihre Felder immer NICHT NULL belassen. NULL benötigt tatsächlich zusätzlichen Speicherplatz und Ihr Programm wird komplexer, wenn Sie Vergleiche durchführen. Dies bedeutet natürlich nicht, dass Sie nicht NULL verwenden können. Die Realität ist sehr kompliziert und es wird immer noch Situationen geben, in denen Sie NULL-Werte verwenden müssen.

7. Tabellen mit fester Länge sind schneller

Wenn alle Felder in der Tabelle „feste Länge“ haben, wird die gesamte Tabelle als „statisch“ oder „feste Länge“ betrachtet. Beispielsweise enthält die Tabelle keine Felder der folgenden Typen: VARCHAR, TEXT, BLOB. Solange Sie eines dieser Felder einschließen, ist die Tabelle keine „statische Tabelle fester Länge“ mehr und die MySQL-Engine verarbeitet sie auf andere Weise.

Tabellen mit fester Länge verbessern die Leistung, da MySQL schneller sucht. Da diese festen Längen die Berechnung des Offsets der nächsten Daten erleichtern, erfolgt das Lesen natürlich schneller. Und wenn das Feld keine feste Länge hat, muss das Programm jedes Mal, wenn Sie das nächste finden möchten, den Primärschlüssel finden.

Und Tabellen mit fester Länge lassen sich auch einfacher zwischenspeichern und neu erstellen. Der einzige Nebeneffekt besteht jedoch darin, dass Felder mit fester Länge etwas Platz verschwenden, da Felder mit fester Länge unabhängig davon, ob Sie sie verwenden oder nicht, so viel Platz beanspruchen.

8. Nutzen Sie die „vertikale Teilung“-Technologie

Sie können Ihren Tisch in zwei Teile teilen, einen mit fester Länge und einen mit variabler Länge. Vertikale Aufteilung „Vertikale Aufteilung“ ist eine Methode, eine Tabelle in einer Datenbank spaltenweise in mehrere Tabellen umzuwandeln, wodurch die Komplexität der Tabelle und die Anzahl der Felder reduziert und so Optimierungszwecke erreicht werden können. Beispiel: In der Benutzertabelle gibt es ein Feld mit der Heimatadresse. Im Vergleich dazu müssen Sie dieses Feld, außer für persönliche Informationen, nicht häufig lesen oder neu schreiben. Warum also nicht in eine andere Tabelle einfügen? Dadurch wird die Leistung Ihrer Tabelle verbessert. Für die Benutzertabelle habe ich nur die Benutzer-ID, den Benutzernamen und die Benutzerrollen. usw. werden häufig verwendet. Kleinere Tabellen bieten immer eine bessere Leistung. Darüber hinaus müssen Sie darauf achten, dass Sie die durch diese getrennten Felder gebildeten Tabellen nicht häufig zusammenführen. Andernfalls ist die Leistung schlechter als bei Nichtteilung und es kommt zu einem extremen Rückgang.

9. EXPLAIN Ihre SELECT-Abfrage

Durch die Verwendung des Schlüsselworts EXPLAIN erfahren Sie, wie MySQL Ihre SQL-Anweisung verarbeitet. Dies kann Ihnen bei der Analyse der Leistungsengpässe Ihrer Abfrageanweisungen oder Tabellenstrukturen helfen. Aus den Abfrageergebnissen von EXPLAIN erfahren Sie auch, wie Ihr Indexprimärschlüssel verwendet wird, wie Ihre Datentabelle durchsucht und sortiert wird usw. usw. Normalerweise können wir das Schlüsselwort EXPLAIN vor komplexeren SELECT-Anweisungen hinzufügen, insbesondere solchen mit mehreren Tabellen. Sie können dazu phpmyadmin verwenden.

5. Frontend-Optimierung

Nach der Optimierung des Backends und der Datenbank müssen wir als nächstes Ihre Frontend-Seite und Ressourcendateien für die Ausgabeseite optimieren, was hauptsächlich die Optimierung von Bilder, JS- und Style-Dateien. Es wird empfohlen, die folgenden Tools zum Testen der Webseitenleistung zur Erkennung und Analyse zu verwenden und entsprechende Optimierungsvorschläge zu geben:

PageSpeed ​​​​​​Tool, entwickelt von Google

Entwickler können PageSpeed ​​verwenden, um die Leistung ihrer Webseiten zu bewerten und erhalten Sie Vorschläge zur Leistungsverbesserung.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo ändern Sie die Leistung einer PHP-Website. 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