如何在 php/mysql Web 应用程序中实现悲观锁定?
- 网络用户打开一个页面来编辑一个数据集(行)
- 网络用户单击“锁定”按钮,因此其他用户可以读取但不能写入此数据集
- 网络用户进行一些修改(可能需要 1 到 30 分钟)
- 网络用户单击“保存”或“取消”,“锁定”被删除
php/mysql 中有针对这种情况的标准方法吗?如果网络用户从未点击“保存”/“取消”而是关闭互联网浏览器,会发生什么?
您需要在表中实现 LOCKDATE 和 LOCKWHO 字段。我已经在 PHP/Mysql 之外的许多应用程序中做到了这一点,并且总是以相同的方式进行。
当 TTL 过去后,锁定就会终止,因此您可以使用 NOW 和 LOCALDATE 进行日期减法,以查看对象是否已锁定超过 30 分钟或 1 小时(如您所愿)。
另一个因素是考虑当前用户是否是锁定对象的用户。这就是为什么您还需要 LOCKWHO。这可以是数据库中的 user_id、PHP 中的 session_id。但将其保留为可识别用户的名称,IP 地址并不是一个好方法。
最后,始终考虑一个批量解锁功能,该功能可以简单地重置所有 LOCKDATE 和 LOCKWHO...
Cheers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)