如果用户在php POST请求期间点击刷新,则回滚MySQL事务

时间:2017-04-18 20:19:15

标签: php mysql database laravel transactions

如果用户点击F5 漫长的过程中停止并重新提交请求,我是否可以回滚MySQL查询? ?

我尝试使用http://php.net/manual/en/function.connection-aborted.php这样:

DB::beginTransaction();
$val = $this->setPINToUsed($request->registrationpin);
sleep(15);
if (connection_aborted() == 1) {
  DB::rollBack();
}else{
  DB::commit();  
}

如何解决此问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

虽然技术上可以做你要求的事情,但真的不应该这样做。

运行交易通常不是一个坏主意,不应该总是应用。而且,将冗长的过程交到客户手中也是不好的。有大量的边缘情况,比如这样的事实:你不能确定php会知道用户已经中止并且你会有逻辑,这会不时发生。

在队列中运行事务要好得多,并要求用户等待几秒钟(或几分钟?)。您可以通过AJAX请求偶尔提供更新。