我正在开发一个用户管理器,它必须控制对可编辑项目的详细 View 的访问。目前,当用户单击“编辑”时,应用程序会查询链接表以检查用户当前是否正在编辑该页面,如果没有,它会允许访问该页面,然后在链接表中插入一条记录以防止其他用户编辑同时编辑同一页面。
我的问题是,如果说用户存在浏览器但没有保存等,那么处理记录删除的最佳方法是什么,因此没有删除记录的操作。
我有几个想法,但在我决定之前希望得到其他意见。
本设计师
最佳答案
一个简单的超时。在表中有一个字段 last_seen
并在用户执行操作时用当前时间更新它。然后,您可以检查last_seen
字段是否超过15分钟左右,删除该记录。
一些伪代码:
edit_something() {
// Assume there's a lock
$is_editable = false;
// Check if lock exists
$q = mysql_query("SELECT * FROM linktable WHERE item_id = 2");
// If a lock exists
if(mysql_num_rows($q) > 0) {
// Check if it's timed out
$r = mysql_fetch_assoc($q);
// Delete lock if it's over 15 minutes old
if(time() - $r > 15 * 60) {
mysql_query("DELETE FROM linktable WHERE item_id = 2");
$is_editable = true;
}
} else {
$is_editable = true;
}
if($is_editable) {
// Lock for current user
mysql_query("INSERT INTO linktable SET item_id = 2, user_id = 5, last_seen = NOW()");
} else {
echo "Sorry, it's locked.";
}
}
关于php - 如果用户正在编辑项目,则锁定详细信息 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435771/