


Lösen Sie das Problem, dass AJAX-Anfragen die Antwortzeit von PHP zu lang machen
Mittlerweile haben wir viele Anwendungen entwickelt, die auf Ajax-Anfragen basieren. In einigen Fällen basieren sogar ganze Seiten auf Ajax. Manchmal stellen wir fest, dass die Antwortzeit von PHP sehr lang ist und der Antwortinhalt gleichzeitig zurückgegeben wird, wenn eine Webseite zwei oder mehr Ajax-Anfragen sendet.
Dieses Problem wird höchstwahrscheinlich durch die Art und Weise verursacht, wie Sie mit PHP-Sitzungen umgehen. Folgen Sie diesem Artikel, um dieses Problem zu verstehen und etwas zu tun, um es zu vermeiden.
Inhalt
Was ist eine PHP-Sitzung?
Was ist Ajax?
Spezifisches Problem
Ursache
Lösung des Problems
Zusammenfassung
Was ist das? eine PHP-Sitzung?
Um dieses Problem zu verstehen, ist es notwendig, zunächst PHP-Sitzungen und Ajax und deren Wechselwirkungen zu verstehen.
Angenommen, Sie entwickeln eine Webanwendung und möchten verschiedene Benutzer identifizieren. Sie möchten sich jedes Mal daran erinnern, wer alle Seiten besucht hat, ohne sich anzumelden. In diesem Fall können Sie Cookies oder Sitzungen verwenden.
Wie Sie vielleicht bemerkt haben, sind Sitzungen eine Möglichkeit, Benutzerinformationen zu speichern, die auf jeder Seite abgerufen werden können. Im Gegensatz zu Cookies werden Sitzungen auf dem Server gespeichert und kein Benutzer kann diese Informationen direkt ändern.
Standardmäßig sind Sitzungen gültig, bis der Benutzer den Browser schließt, oder sie laufen ab, nachdem der Benutzer für einen in der PHP-Konfigurationsdatei angegebenen Zeitraum inaktiv war.
Wenn Sie auf einer PHP-Seite Benutzerdaten speichern oder abrufen möchten, müssen Sie session_start() am Anfang der Seite aufrufen, damit Sie die Berechtigung haben, $_SESSION zum Abrufen von Sitzungsdaten zu verwenden.
Was ist Ajax?
Ajax steht für Asynchronous JavaScript and XML und ist eine Möglichkeit, Daten an den Server zu senden und von diesem zu empfangen, ohne die gesamte Seite neu laden zu müssen.
Auf diese Weise können wir Daten schneller senden und vom Server abrufen. Wir müssen nicht die gesamte Seite abrufen und im Browser rendern, da das langsam ist.
Daher können wir einen Teil der Seite aktualisieren und die Änderung für den Benutzer sichtbar machen, so wie ein Benutzer auf einer Facebook-Timeline-Seite nach unten scrollt, um zu sehen, was er sehen möchte, wenn neue Inhalte hinzugefügt werden, ohne die gesamte Seite neu laden zu müssen.
Spezifische Probleme
Die Entwicklung von Webanwendungen, die fast zu 100 % auf Ajax basieren, ist nichts Neues, aber wenn eine Webseite zwei oder mehr Ajax-Anfragen gleichzeitig sendet, werden Sie die Anfrage bemerken dauert lange und ist fast zeitgleich abgeschlossen.
Ursache
Wenn Sie möchten, dass der Server eine Ajax-Anfrage sendet, öffnet das PHP-Skript auch session_start() und sein Aufruf sperrt die PHP-Sitzungsdatei.
Wie Sie vielleicht bereits wissen, speichert PHP Sitzungsdaten standardmäßig in Dateien auf dem Server. Da nur eine PHP-Anfrage dieselbe Sitzungsdatei ändern kann, können zwei gleichzeitige PHP-Anfragen eine typische Dateisperrbedingung verursachen, sodass jede andere von PHP für denselben Benutzer aufgerufene session_start()-Anfrage warten muss, bis die erste Anfrage endet.
Jetzt verwenden die meisten PHP-Frameworks zuerst session_start() in der Hauptdatei. Wenn Sie daher ein Framework oder eine Bibliothek verwenden, die session_start() aufruft, führt dies zu einer Sitzungsdateisperre, die gleichzeitige Ajax-Anfragen an denselben Benutzer, der denselben Browser verwendet, verzögert.
Lösung des Problems
Der Aufruf der Funktion session_write_close() führt dazu, dass PHP die Sitzungsdatei schreibt und schließt, sodass nach der Freigabe der Sitzungsdatei eine weitere Anfrage erfolgt hat die Berechtigung zum Schreiben.
Nach dem Aufruf von session_write_close() wird das aktuelle Skript normal weiter ausgeführt, Sie sollten jedoch wissen, dass nach dem Aufruf von session_write_close() keine Sitzungsvariablen geändert werden dürfen Andere an PHP gesendete Anfragen können Sitzungsdateien sperren und Sitzungsvariablen ändern.
Damit Sie diese Art von Problem erkennen können, habe ich Testcode erstellt und ihn auf Github hochgeladen. Das Testskript finden Sie hier. Lokal müssen Sie eine Instanz verwenden, um den Testcode zu verwenden, und dann die Browserkonsole öffnen, um die Anforderungs- und Antwortzeiten anzuzeigen.
Wie wir im Beispielcode in dieser Datei sehen, wenn wir mehrere Anfragen wie den folgenden Code erstellen...
<code><span>session_start()</span>; <span>sleep(<span>5</span>)</span>;</code>
Jede Anfrage für denselben Benutzer wartet, bis die vorherige Anfrage abgeschlossen ist, bevor sie abgeschlossen wird. Es dauert 5 Sekunden, da die Sitzungsdatei erst freigegeben wird, wenn das Skript abgeschlossen ist. Daher werden beim ersten Aufruf von session_start() neue Anfragen blockiert. Das würde die Idee asynchroner Anfragen zunichte machen, d. h. mehrere Anfragen werden gleichzeitig gesendet und ausgeführt.
Wenn Sie den Code in der Datei ändern:
<code><span>session_start()</span>; <span>// do something useful here</span><span>session_write_close()</span>; <span>sleep(<span>5</span>)</span>;</code>
Die dritte Codezeile hebt die Sperre der Sitzungsdatei auf, sodass eine weitere gleichzeitige Anforderung ohne Wartezeit ausgeführt werden kann, da session_start() ohne Fragen aufgerufen werden kann .
Zusammenfassung
Es gibt etwas Subtiles an PHP, das Sie darüber beunruhigen lässt, warum seltsame Dinge passieren. Aber sobald man versteht, wie die Dinge funktionieren, ergibt alles einen Sinn und man kann besser über die Lösung von Problemen nachdenken.
Übersetzungsquelle: http://www.ido321.com/1577.html
Dieser Artikel wurde auf der Grundlage von @Eslam Mahmouds „Fix the AJAX Requests that Make PHP Take Too Long to Respond“ übersetzt. Die gesamte Übersetzung enthält mein eigenes Verständnis und meine eigenen Gedanken falsch Bitte fragen Sie auch Ihre Freunde aus der gleichen Branche um Rat. Wenn Sie diese Übersetzung erneut drucken möchten, geben Sie bitte die englische Quelle an: http://www.phpclasses.org/blog/post/277-Fix-the-AJAX-Requests-that-Make-PHP-Take-Too-Long- zu- Respond.html
Das Obige stellt vor, wie man das Problem der AJAX-Anfrage löst, die dazu führt, dass PHP zu lange braucht, um zu antworten. Ich hoffe, dass es Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
