Signatur
Beschreibung
litespeed_finish_request() ist eine LiteSpeed-spezifische Funktion, die – analog zu fastcgi_finish_request() für FPM – die HTTP-Antwort abschließt und alle gepufferten Ausgaben an den Client sendet, ohne das PHP-Skript zu beenden. Der Client erhält die vollständige Antwort und die Verbindung wird geschlossen, während PHP im Hintergrund weiterlaufen kann.
Diese Funktion ist besonders nützlich, wenn nach dem Senden der Antwort noch zeitintensive Aufgaben erledigt werden müssen, die den Benutzer nicht warten lassen sollen – etwa das Schreiben von Logs, das Versenden von E-Mails, das Verarbeiten von Warteschlangen oder das Aufräumen von temporären Dateien.
Im Gegensatz zu ob_flush() oder flush() signalisiert litespeed_finish_request() dem Webserver, dass die Antwort vollständig ist, und schließt die Verbindung endgültig. Danach erfolgende echo- oder print-Aufrufe werden nicht mehr an den Client gesendet.
Die Funktion ist nur verfügbar, wenn PHP unter dem LiteSpeed Web Server (LSAPI) betrieben wird. Auf anderen Servern wie Apache oder Nginx steht sie nicht zur Verfügung und sollte daher mit function_exists() geprüft werden.
Rückgabewert
true zurück, wenn die Anfrage erfolgreich abgeschlossen und die Antwort gesendet wurde, andernfalls false.Beispiele
Schnelle Antwort mit Hintergrundverarbeitung
<?php
// Sofortige Antwort an den Client senden
echo json_encode(['status' => 'ok', 'message' => 'Verarbeitung läuft im Hintergrund']);
// HTTP-Antwort abschließen und Verbindung trennen
if (function_exists('litespeed_finish_request')) {
litespeed_finish_request();
} else {
// Fallback für andere Server (z. B. FPM)
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
}
// Ab hier läuft PHP weiter, ohne dass der Client wartet
sleep(5); // Simuliert eine zeitintensive Aufgabe
file_put_contents('/tmp/hintergrund.log', date('c') . ' - Verarbeitung abgeschlossen' . PHP_EOL, FILE_APPEND);
E-Mail nach Antwort versenden
<?php
// Formular-Daten verarbeiten und sofort Rückmeldung geben
$name = htmlspecialchars($_POST['name'] ?? 'Unbekannt');
echo 'Danke, ' . $name . '! Deine Nachricht wurde empfangen.';
// Antwort an Client senden
if (function_exists('litespeed_finish_request')) {
litespeed_finish_request();
}
// E-Mail im Hintergrund senden (Benutzer wartet nicht)
mail(
'admin@example.com',
'Neue Kontaktanfrage',
'Von: ' . $name,
'From: noreply@example.com'
);
error_log('Kontaktformular von ' . $name . ' verarbeitet um ' . date('c'));
// Wichtig · Fallstricke
Verfügbarkeit: litespeed_finish_request() ist ausschließlich bei PHP-Betrieb unter dem LiteSpeed Web Server über die LSAPI verfügbar. Prüfe mit function_exists('litespeed_finish_request'), bevor du die Funktion aufrufst, um Fehler auf anderen Serverumgebungen zu vermeiden.
Session-Daten: Falls Sessions verwendet werden, muss session_write_close() vor dem Aufruf von litespeed_finish_request() aufgerufen werden, da die Session-Datei sonst gesperrt bleiben kann und nachfolgende Anfragen blockiert.
Ausgabe-Pufferung: Alle offenen Ausgabepuffer (ob_start()) sollten vor dem Aufruf geleert werden, damit deren Inhalt tatsächlich an den Client gesendet wird. Andernfalls kann der gepufferte Inhalt verloren gehen oder nicht korrekt übertragen werden.