-
倚天杖
我感觉你这在把简单的问题复杂化,
如果有两个人先后编辑同一文章,管它们客户端的状态呢,谁先提交的算谁编辑的。
当然,照顾到后提交者的情绪,可以这样做:
每篇文章记录编辑次数count,网页提交Form中放一个隐藏的input标签,记录用户刷新时的count,提交成功后服务器里count+1。
这样,当有多人提交的时候,你就知道他编辑的是否为最新版本,如不是,则提交驳回,并提示人家有最新编辑的版本。同时还可以缓存下人家要提交的东西,避免丢失。
-
ABOUTYOU
这是一个并发处理的问题,建议采用乐观锁的方式。
-
翻过高山走不出你
你的意思 让所有的人都可以编辑 提交的时候看 数据库中的是不是原来的 如果是就让你更新,如果不是就提示你已经有了最新版本的 但是我想点击标题的时候 就给他提示说有人正在编辑
-
墨色风雨
“点击标题的时候 就给他提示说有人正在编辑“如果点击标题时没有被编辑,点击后马上被人编辑了怎么办?
-
紫衣仙女
点击标题直接进入编辑页面的啊 点击标题的那一时刻就在数据库中改状态或者application呀然后进去谁先点击就让谁编辑 在于点的那一时刻
-
阿波罗的战车
这是悲观处理方式
-
烙印99
哪种比较好一点呢 我觉得乐观的麻烦呀
-
弑天下
你好,你这里对这个文章加一个状态和当前编辑者
state=1表示非编辑用户不可编辑
state=0表示任意用户可编辑
每次某个用户XXX编辑的时候为这篇文章修改状态state=1,且当前编辑用户为XXX
修改完成之后设置state=0,切将当前编辑用户设置为空。
如果遇到断电的情况下,那么用户XXX重新登录到系统中,这个state=1且当前编辑用户为XXX的文章对于用户XXX为可编辑,其他用户不可编辑。
-
婷婷同学_
悲观并发不好控制,就像你说的停电、断网等很难处理。乐观并发就没有这种情况。
-
慕斯王
呵呵,你可以在用户非正常状态退出的时候由服务器端清理掉用户编辑的那篇文章的状态。比如在断电的情况下是可以由服务端自动注销清理用户信息的。ASP中有个Global.asax里面有个 void Session_End(object sender, EventArgs e) { //在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才会引发 Session_End 事件。如果会话模式 //设置为 StateServer 或 SQLServer,则不会引发该事件。 }