私は PHP スクリプトを持っています。これは、呼び出されたときに何らかの処理を行い、3 秒間スリープしてから、その結果をエコーします。
そして、上記のスクリプトを (Ajax リクエスト1/10
で) 毎秒呼び出すこのページがあります。応答が得られたら、div 要素内に数値を書き込みます。
問題は、onreadystatechange ハンドラーが 3 秒ごとに起動され、30 個の数値をまとめて書き込むことです。sleep()
必要なように動作する他の代替手段はありますか?
リクエストされるページのコード スニペットは次のとおりです。
ignore_user_abort(true);
$time=microtime(true)*10000;
changemystatus(1, $time); //this writes to a database
sleep(3);
if ($time>=getmytime()){ //getmytime() reads the data previously written by changemystatus()
setstatus(0); // still writing to that DB
echo("1");
}else echo ("0");
基本的に、ユーザーがもうリクエストを送信していない場合 (ユーザーがいなくなった、接続がダウンした、または JS を無効にしたなど)、DB の「ステータス」フィールドを 0 に変更して、他のプレイヤーが自分のことを知ることができるようにします。今「オフライン」。