猿问

关于锁定文章 不让其他人编辑 怎么处理

谁做过 这类的项目 一个文章 一个用户编辑了 另一个用户就不让编辑了   
我现在有一种办法 就是给加个状态 当一个用户编辑 让state=1 编辑完成修改成0   
state=1的时候别人就编辑不成 为0的时候就可以进行编辑
但是这样子 假如 停电啊 什么的断网 则 需要管理员手动去改回为0

另一种办法就是 application 但是这个有没有过期时间呢 我正在google中...

有遇到的朋友 讨论下 谢谢了饿

绝地无双
浏览 573回答 12
12回答

倚天杖

我感觉你这在把简单的问题复杂化,   如果有两个人先后编辑同一文章,管它们客户端的状态呢,谁先提交的算谁编辑的。   当然,照顾到后提交者的情绪,可以这样做:   每篇文章记录编辑次数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,则不会引发该事件。 }
随时随地看视频慕课网APP
我要回答