それほど短期間ではないリクエストで、ユーザーが接続をキャンセルした (つまり、リクエストが完了する前にブラウザを閉じた) 場合、サーバー側で何が起こるでしょうか?
ただし、サーバーに依存する必要があります。しかし、一般的な方法は何でしょうか?
一部の要求は、完了するまでにかなり長い時間がかかります。たとえば、分散 DBMS トランザクションでは、データが異なる国の複数の異なるサーバーにコミットされます。(銀行の申し込みではよくあることだと思います)
たとえば、ユーザーが大きな添付ファイルをダウンロードする場合など、一部の要求はクライアントに大量のデータを送信します。
特定のタイムアウト後にリクエストスレッドをキャンセルする必要がありますか?
私の Web アプリケーションがユーザー アクティビティを処理し、次のように自分でトランザクションをキャンセルする必要があります。
service(request, response):
tx_start();
do {
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
do_some_work()
if (user_canceled) break;
tx_commit();
return;
} while (false);
tx_rollback();
throw new CanceledException();
}
するべきか?