PHP Event Source wird weiterhin ausgeführt

Ich habe begonnen, Push in HTML5 mit dem JavaScript EventSource-Objekt zu verwenden. Ich war total zufrieden mit einer funktionierenden Lösung in PHP:

$time = 0;
while(true) {
    if(connection_status() != CONNECTION_NORMAL) {
        mysql_close()
        break;
    }
    $result = mysql_query("SELECT `id` FROM `table` WHERE UNIX_TIMESTAMP(`lastUpdate`) > '".$time."'");
    while($row = mysql_fetch_array($result)) {
        echo "data:".$row["id"].PHP_EOL;
        echo PHP_EOL;
        ob_flush();
        flush();
    }
    $time = time();
    sleep(1);
}

Aber plötzlich war meine WebApp mit einem MySQL-Fehler "zu viele Verbindungen" nicht mehr erreichbar.

Es stellte sich heraus, dass die MySQL-Verbindung nach dem Schließen der Ereignisquelle in JavaScript nicht geschlossen wird:

window.onload = function() {
    sse = new EventSource("push.php");
    sse.onmessage = function(event) {
        console.log(event.data.split(":")[1]);
    }
}
window.onbeforeunload = function() {
    sse.close();
}

Ich vermute also, dass das PHP-Skript nicht aufhört, auszuführen. Gibt es eine Möglichkeit, eine Funktion aufzurufen (wie zdie();) bevor die Clientverbindung getrennt wird? Warum wird mein Skript nach dem Aufruf nicht beendet?.close(); auf der EventSource ?!

Danke für die Hilfe! -

Antworten auf die Frage(6)

Ihre Antwort auf die Frage