大佬教程收集整理的这篇文章主要介绍了php – 当用户中止连接时回滚事务,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用PHP和Ajax创建像Google Wave这样的应用程序.我有一个textarea,当用户输入内容时,使用oninput检测页面上的javascript并将textarea的内容发送到服务器,服务器将内容存储到数据库中.
我正在做的是,每当我通过XHR发送内容时,XHR.abort()总是会中断先前的XHR请求.数据库中的数据很好,但有时它存储在以前的版本中.
我知道这是因为PHP没有停止执行,即使客户端已经中止,有时前一个请求花费了更多时间,最后一个请求并在最后一个请求之后完成,所以我读了“ignore_user_abort”函数的手册和“connection_aborted”,但问题仍然存在.
我创建了这个脚本来模拟情况,我希望当我中止连接时(按“停止”,关闭选项卡/窗口),数据库上没有任何新数据,但是5秒后,我仍然有新数据,所以当用户中止连接时,我需要帮助来回滚事务.
这是要模拟的脚本(定义了PDO_DSN,PDO_USER,PDO_PASS):
<?php ignore_user_abort(true); ob_start('ob_gzhandler'); $PDO = new PDO(PDO_DSN,PDO_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); $PDO->beginTransaction(); $query = $PDO->query('INSERT INTO `table` (`content`) VALUES (' . $PDO->quote('test') . ')'); sleep(5); echo ' '; ob_flush(); flush(); if (connection_aborted()) { $PDO->rollBack(); exit; } $PDO->commit(); ob_end_flush();
以上是大佬教程为你收集整理的php – 当用户中止连接时回滚事务全部内容,希望文章能够帮你解决php – 当用户中止连接时回滚事务所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。