对于一个不那么短的请求,用户取消了连接(即在请求完成之前他/她关闭了浏览器),那么服务器端会发生什么?
不过,它应该取决于服务器。但是常见的方法是什么?
有些请求需要相当长的时间才能完成,例如,一个分布式 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();
}
我是不是该?