我的网站(用 PHP 和 MySql 编写)中有一些用户可以编辑的数据。
如您所知,如果 用户 A
打开编辑框,而在编辑过程中另一个 用户 B
打开相同的编辑框,其中一个用户将失去他的修订(第一个完成的)。
所以我为第一个尝试编辑的用户实现了一种访问时间(20 分钟)。这是代码:
$dateBlock=date("Y-m-d H:i:s");
$update=mysql_query("UPDATE tracklist SET block_user='".$_SESSION['nickname']."', block_date='".$dateBlock."' WHERE
(trackid='".$_GET['trackid']."' AND block_user='') or
(trackid='".$_GET['trackid']."' AND block_user='".$_SESSION['nickname']."') or
(trackid='".$_GET['trackid']."' AND block_date<SUBTIME('".$dateBlock."', '0:20'))",$mydb);
$updatedRows=mysql_affected_rows();
if($updatedRows==0) $messaggio="Sorry but another User is editing this tracklist";
但是我不太喜欢这种方式。
你能给我什么建议?例如,stackoverflow 上的方法是什么?
最佳答案
您必须在两个选项中做出选择:
您还可以提供的一项增强功能是,通过将版本/提交时间与他下载的帖子进行比较,在他想要发送编辑的那一刻通知用户自从他打开帖子以来该帖子已经更新。然后他可以选择先查看它并整合更改。
关于php - 管理主题编辑并发的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5804040/