$.post
によって jQueryが中止されたときに、PHP スクリプトの実行を停止しようとしていabort()
ます。基本的に、ユーザーが入力フィールドを変更するたびに、 に$.post
ヒットする必要がありtest.php
ます。最初の要求が戻る前に 2 番目の入力が変更された場合、$.post
は中止され、新しい入力が送信されます。これが発生したときにPHPの実行を停止したい。
connection_status() は、クライアントが (STOP ボタンで) 正常に切断した場合にのみ、ABORTED 状態を返します。この場合、ブラウザーは RST TCP パケットを送信して、接続が閉じられたことを PHP に通知します。
RST TCP
使用時に送信する方法はありますxhr.abort()
か?
test.php
ファイルでこれをテストしたことを確認するため。理論的には、スクリプトが停止した場合、ファイルのサイズと行数は異なるはずです。しかし、それらはすべて同じです。したがって、スクリプトは中止されません。
jQuery のメイン ファイル:
var xhr = false;
$('input').on('change', function(){
if(xhr){
xhr.abort();
}
xhr = $.post('/test.php', this.value, function(b64){
xhr = false;
});
});
PHP test.php
ignore_user_abort(false);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test/test1.log', "1\r\n", FILE_APPEND);
sleep(1);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test/test2.log', "1\r\n", FILE_APPEND);
sleep(1);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test/test3.log', "1\r\n", FILE_APPEND);
sleep(1);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test/test4.log', "1\r\n", FILE_APPEND);