JavaScript EventSource オブジェクトを使用して、HTML5 でプッシュを使い始めました。私は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);
}
しかし突然、MySQL エラー「接続が多すぎます」で WebApp に到達できなくなりました。
JavaScript でイベント ソースを閉じた後、MySQL 接続が閉じないことが判明しました。
window.onload = function() {
sse = new EventSource("push.php");
sse.onmessage = function(event) {
console.log(event.data.split(":")[1]);
}
}
window.onbeforeunload = function() {
sse.close();
}
したがって、PHP スクリプトの実行は停止しないと思います。die();
クライアント接続が切断される前に関数 ( など) を呼び出す方法はありますか? .close();
EventSourceを呼び出した後、スクリプトが終了しないのはなぜですか?!
手伝ってくれてありがとう!—</p>