Ajax reqeust hangs verhindern mittles PHP

Beitrag vom August 2024 aus dem Bereich Coding von Arthur Weder

Werden über Ajax mehrere Anfragen gleichzeitig gesendet, verhindert die Initialisierung der Session die parallele Verarbeitung. Man muss warten, bis Skript A fertig ist, damit Skript B verarbeitet werden kann, und so weiter. Es hangt also.

Ajax reqeust hangs verhindern mittles PHP

Bei Verwendung einer Sitzung verarbeitet PHP für diese Sitzung jeweils nur eine Anforderung. Dies liegt daran, dass session_write_close() automatisch aufgerufen wird, wenn das Skript beendet wird. Wenn also die Ausführung des ersten Aufrufs 60 Sekunden dauert, müssen die anderen Aufrufe warten. Dies wird als Sitzungssperre bezeichnet und ist wichtig, um Race Conditions zu verhindern.

Wenn Ihre AJAX-Aufrufe keine Sitzungsdaten benötigen, öffnen Sie in diesen Skripten keine Sitzung.

Wenn Ihre AJAX-Aufrufe Sitzungsdaten benötigen, führen Sie session_write_close() aus, sobald Sie das Sitzungsarray nicht mehr benötigen.

Nachfolgend finden Sie ein Beispiel, wie Sie die Sitzungssperre verringern können:

<?php
// code bla bla bla

// session wird benötigt
session_start();

// session wird gelesen und in eine variable geschrieben
$user_id = $_SESSION[ 'user_id' ];

// session wird geschlossen und für andere session frei gegeben
session_write_close();

// dan alles andere, db selects etc
// select * from whatever where user_id = $user_id

// am schluss zurück als json
echo json_encode( $db_results );

Passende Beiträge aus dem Bereich Coding

So übertragen Sie Ihr Webhosting Schritt für Schritt

So übertragen Sie Ihr Webhosting Schritt für Schritt

Sie möchten den Hosting-Anbieter wechseln, wissen aber nicht, wie es am schnellsten gehen soll? Dann sind Sie hier rich...

Git-Abruf aus PHP-Datei unter Verwendung privater Schlüssel

Git-Abruf aus PHP-Datei unter Verwendung privater Schlüssel

Um ein Git-Pull aus einer PHP-Datei zu automatisieren, wird ein privater SSH-Schlüssel erstellt und im GitHub-Repositor...