Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse einer Sitzungssperre in PHP, um blockierende Anfragen zu verhindern

Beispielanalyse einer Sitzungssperre in PHP, um blockierende Anfragen zu verhindern

黄舟
黄舟Original
2017-08-08 09:29:001280Durchsuche

In diesem Artikel wird hauptsächlich die Methode von PHP zum Verhindern von Blockierungsanforderungen basierend auf Sitzungssperren vorgestellt. Er analysiert die Verwendung von PHP-Session-Sperren und die damit verbundenen Betriebstechniken, um Blockierungsanforderungen in Form von Beispielen zu verhindern.

Das Beispiel beschreibt, wie PHP Sitzungssperren verwendet, um blockierende Anfragen zu verhindern. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Erklärung:

Vorheriger Artikel Sitzungsblockierungsprobleme und Lösungen in der PHP-Programmierung Nach einer kurzen Analyse der Lösung für das Blockieren von PHP-Sitzungen finden Sie hier eine weitere Lösung.

Text:

Moderne Browser begrenzen die Anzahl gleichzeitiger Verbindungen zu einem Host im Allgemeinen auf 4 oder 6. Das bedeutet, dass es aufgrund der Beschränkung der Parallelität zu einer Warteschlangenbildung kommt, wenn Ihre Webseite Dutzende Assert-Dateien (JS, Bilder, CSS) vom selben Host lädt. Das gleiche oder noch schlimmere Problem tritt auch bei PHP-Skripten auf, die Sitzungen verwenden.

Problem:

PHP-Sitzungen werden standardmäßig in Dateien gespeichert, wenn eine PHP-Datei (session_start()) angefordert wird, die zum Betrieb benötigt wird session wird diese Datei vom ersten Prozess gesperrt, der die Sitzung ausführt, wodurch andere Anforderungen blockiert werden. Andere Anfragen bleiben unter session_start() ausstehend, bis die Sitzungsdatei entsperrt ist.

Lösung:

Da die gesperrte Sitzungsdatei erst entsperrt wird, wenn die Skriptausführung endet oder die Sitzung normal geschlossen wird, um Wenn es gesperrt ist, um eine große Anzahl von PHP-Anfragen zu verhindern (Sie müssen $_SESSION-Daten verwenden), können Sie die Sitzung sofort nach dem Schreiben schließen und so die Sperre aufheben.

Sitzung schließen:


session_write_close();

Diese Technik ist sehr nützlich, insbesondere für ein Skript, dessen Verarbeitung lange dauert. Und diese Funktion beendet lediglich die Schreibsitzung, das Lesen ist weiterhin möglich.


// 
session_start();
//可以读写session
$_SESSION['latestRequestTime'] = time();
//关闭session
session_write_close();
//读取session
$twitterId = $_SESSION['twitterId'];

Anmerkung:

Nach PHP5.4 unterstützt session_set_save_handler die Zustellung SessionHandlerInterface, der zweite Parameter besteht darin, session_write_close() als Rückrufmethode anzugeben (der Standardwert ist true) und die Funktion session_write_close() als register_shutdown_function()-Funktion zu registrieren.

Die Verwendung von Memcache oder Redis zum Speichern von Sitzungen kann das „Sperr“-Problem lösen, aber wenn es nicht richtig gehandhabt wird, erhöht sich die Anzahl der Verbindungen (wenn es nach dem Sitzungsvorgang zeitaufwändige Vorgänge gibt). Verbindung wird nicht hergestellt Zum Recycling können Sie den session_write_close()-Vorgang aktiv ausführen, nachdem der Sitzungsschreibvorgang abgeschlossen ist)

Das obige ist der detaillierte Inhalt vonBeispielanalyse einer Sitzungssperre in PHP, um blockierende Anfragen zu verhindern. 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