如何在php / mysql Web应用程序中实现悲观锁定?

如何在PHP / mysql Web应用程序中实现悲观锁定?

> web-user打开一个页面来编辑一个数据集(行)
>网络用户点击“锁定”按钮,以便其他用户能够阅读但不能写入此数据集
>网络用户进行一些修改(可能需要1到30分钟)
>网络用户点击“保存”或“取消”,删除“锁定”

在这种情况下,PHP / MysqL中是否有标准方法?如果网络用户从未点击“保存”/“取消”但关闭了互联网开发者,会发生什么?

最佳答案
传统上,这是通过在数据库中记录适当标记的布尔锁定列来完成的.

这种锁定的功能是必须释放锁定,并且环境可以自然地防止这种情况发生(系统崩溃,用户愚蠢,网络数据包丢失等等).这就是为什么你需要提供一些手动解锁方法和/或施加时间限制(可能有一个cron作业?)记录锁定的时间长度.如果浏览器仍处于打开状态,您可以实施某种AJAX轮询以保持记录锁定?无论如何,您可能最好验证记录中的数据与修改之前获取锁定时的数据相同.

这种行为的这种限制在Web应用程序中尤为普遍,但对于使用此方法的任何事情都是如此 – 对于一个,Sage Line 50是一个bug,我经常在机器/应用程序崩溃后删除锁定文件.

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...