在浏览器中编辑时锁定文件/内容。

2024-01-24

在我的一个项目中,允许用户编辑同一文件。这是小组工作,小组中的用户最多为 4 人。同时编辑的情况很少见,但有可能。我正在使用 ckeditor 显示内容。如何在编辑内容时锁定内容? 对于上述情况,如果用户打开内容进行编辑,然后从不保存并保持窗口打开,将会发生什么情况。是否可以保存内容,解除锁定以供其他用户编辑?如果第一个用户回到办公桌,他们应该会看到“内容已更改,请刷新”的消息。

我使用的是php、mysql。

Thanks


您需要三个部分才能完成这项工作。

  1. 您需要在数据库中添加一个字段来指示文件何时被编辑。创建一个名为“LastUsed”的字段,并记录打开文件进行编辑的时间戳。当有人尝试打开文件时,请检查时间戳,如果时间戳是最近的(例如最近 5 分钟),则不允许第二个用户打开该文件。

  2. 在允许编辑文件的页面上,每隔几分钟运行一次 ajax 请求。它所需要做的就是将正在编辑的文件的时间戳更新为当前日期和时间。

  3. 然后,您可以运行一个计时器,一旦到达某个点,ajax 请求就会停止,这样数据库中的时间戳就会过期。但是,每次用户采取操作时都会重置该计时器。这样只要用户在做某事,计时器就会重置,并且允许 ajax 请求继续更新数据库中的时间戳。如果用户在给定时间内没有执行任何操作,计时器就会计时,ajax 请求就会停止,时间戳就会过期,其他人就可以打开它进行编辑。您还可以使用同一计时器来显示编辑会话已过期或其他内容的消息。

它基本上是这样工作的:

  • 当用户编辑文件时,ajax 请求会不断更新“LastUsed”时间戳。

  • 只要该页面打开以编辑文件,ajax 请求就会使数据库中的时间戳保持最新。

  • 如果该人保持页面打开但没有执行任何操作,计时器将运行并停止 ajax 请求,这将允许其他人编辑该文件。

  • 一旦用户离开页面,ajax 请求将无法再更新时间戳。这样,如果一个人离开页面,其他人就可以编辑该文件。

  • 因此,当第二个用户尝试编辑该文件时,如果“LastUsed”时间戳在过去 5 分钟内,您就知道其他人正在编辑该文件。如果时间戳大于 5 分钟,您就知道当前没有人打开该文件进行编辑,因此第二个用户可以编辑它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在浏览器中编辑时锁定文件/内容。 的相关文章

  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • PHP 自定义会话处理程序问题 (PHP 7.1)

    我刚刚在计算机上从 PHP 7 0 迁移到 PHP 7 1 当前版本的 WAMP 的全新 全新安装 它似乎破坏了自定义会话处理程序中的某些内容 该处理程序应该将会话保存到数据库而不是使用文件系统 自定义处理程序类是 class db ses
  • PHP 函数 iconv 字符编码从 iso-8859-1 到 utf-8

    我正在尝试将字符串从 iso 8859 1 转换为 utf 8 但是当我找到这两个字符 和 时 函数返回 一个字符 是一个里面有两个数字的正方形 我该如何解决这个问题 我认为您正在寻找的编码是Windows 代码页 1252 http en
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • WooCommerce 自定义字段 - 多选

    我在 WooCommerce 的结账页面添加额外的字段 我可以添加文本框等基本字段 但需要添加一个 多 选择框 用户可以在其中选择多个项目 我已经弄清楚如何通过代码添加选择框 如下所示 add action woocommerce afte
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • 项目链接在 Wamp 服务器上不起作用

    我正在另一台计算机上安装 Wamp 服务器来运行中型数据库和 UI 我已成功阻止 IIS 并将服务器路由到 Localhost 8080 但是每当我尝试从 localhost 主页访问我的项目时 在 www 文件中 我被重定向到页面未找到错
  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • 如何使用 Google Calendar API 和官方 PHP 库创建全天活动?

    我有这个代码 event new Event event gt setSummary event summary event gt setLocation event location start new EventDateTime sta
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • Twitch API - 无法使用 PHP 获取身份验证令牌

    stackoverflow 的成员们大家好 我不是一个喜欢寻求帮助的人 但在这种情况下 我认为这是解决我的问题的唯一方法 谷歌并没有给我太大帮助 所以 我的问题 我想使用 Twitch API 获取一些数据 听起来很容易 我希望是这样 下面
  • zend框架验证模型中的数据而不是表单中的数据

    使用 Zend Framework 2 在我的应用程序中 要编辑数据库中的数据 可以编译 html 表单或发送 http post 请求 我的服务器作为 Web 服务实现 在第二种情况下 不会呈现表单 问题 如果当服务器收到不是从表单发送而
  • PHP 搜索部分字符串

    如何在键入时搜索部分字符串 不使用 MySQL 例如 MySQL 中的 LIKE 函数 但在搜索字符串时使用 PHP 例如 但这显然行不通 但是有没有一个函数可以搜索部分字符串 那太好了 EDIT 如果它在数组中怎么办 如果我使用 strp
  • 将 Base64 字符串转换为图像文件? [复制]

    这个问题在这里已经有答案了 我正在尝试将我的 Base64 图像字符串转换为图像文件 这是我的 Base64 字符串 http pastebin com ENkTrGNG http pastebin com ENkTrGNG 使用以下代码将
  • Google Drive V3、Google API 客户端 2.0 - 批量上传失败

    使用 Google Drive V3 和 API v2 0 主分支进行批量上传失败 我已经修改了https github com google google api php client blob master examples batch
  • MVC 框架中的缓存策略?

    我编写了自己的小型 PHP MVC 框架 现在正在探索 PHP MVC 框架中的缓存策略 我正在考虑可以缓存什么 在哪里以及如何缓存 我的框架是简单的MVC框架 我有前端控制器 它启动应用程序 注册类自动加载 设置 php 运行时指令 最后
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • Visual Studio 2017 Node.js 异常不起作用

    我刚刚开始使用 VS 2017 Professional 进行 Node js 开发 调试通常可以工作 但是当抛出未捕获的异常时 nodejs 进程会立即停止 并且我没有任何更改来跟踪问题 我还在调试器设置中启用了nodejs exptio
  • 通过安装程序 (MSI) Windows 7 更新 Node.js 时看不到最新版本

    我正在尝试更新 Windows 7 机器上的节点 但在重新安装 更新节点后我没有看到最新版本 我只是出去http nodejs org download http nodejs org download 并获取最新的 Windows 安装程
  • 用户友好且难以猜测的唯一标识符

    我的团队正在开发一个具有旧数据库的应用程序 该数据库使用两个不同的值作为 Group 对象的唯一标识符 Id是一个自动递增的 Identity 列 其值由插入时的数据库确定 GroupCode由应用程序决定after插入 并且是 Group
  • 优化“where date Between”类型查询的 Dax 和模型

    我正在构建一个模型以允许报告两个单独的数据集 在本例中 我们将说学生数据集和员工数据集 数据集非常独立 两者之间唯一真正的联系是日期 因此从模型的角度来看 有一个学生星型模式和一个员工星型模式 显示的数据是快照类型数据 回答如下问题 对于选
  • 将 OpenCV 代码从 C++ 转换为 Java

    我目前正在尝试将一些遗留代码从 iPhone 迁移到 Android 此代码使用 OpenCV 库进行一些图像处理 总的来说 一切进展顺利 但我被一行代码困住了 我不知道如何将其转换为 Java 代码 Scalar dMean Scalar
  • 查明之前是否安装了特定的 Android 应用程序

    我有一个应用程序 它为您提供各种应用程序的列表 您可以从 Play 商店下载并安装这些应用程序来赚取好东西 现在 我不希望用户卸载以前安装的应用程序和再次下载通过我的应用程序并赚取好东西 有没有办法查明用户设备上以前是否安装过特定应用程序
  • 重新实现 ToUpper()

    如果 ToUpper 不存在 你会如何编写它 i18n 和 L10n 的奖励积分 由此引发了好奇心 http thedailywtf com Articles The Long Way toUpper aspx http thedailyw
  • heroku-rails-权限被拒绝(公钥)

    heroku create Creating floating planet 1824 done stack is bamboo mri 1 9 2 http floating planet 1824 heroku com email pr
  • 限制并行/同时下载 - 如何知道下载是否被取消?

    我有一个用 PHP 编写的简单文件上传服务 其中还包括一个脚本 当用户请求从此站点下载时 该脚本通过发送有限大小的数据包来控制下载速度 我想实现一个系统 将每个用户的并行 同时下载限制为 1 如果他们不是高级会员 在上面的下载脚本中 我可以
  • 使用队列和堆栈将中缀转换为后缀的运行时间是多少?

    在c 中 我知道队列和堆栈的各个函数的时间复杂度 但我不知道同时使用队列和堆栈的 infixToPostfix 函数的时间复杂度是多少 我当然是一名初学者程序员 而且我我很困惑 我认为使用堆栈和队列从中缀转换为后缀是 Dijkstra 的调
  • 在 SSAS 中使用参数测试 mdx 查询

    我想在 SSAS 中测试 MDX 查询 到目前为止我已经执行了以下步骤 我打开 SQL Profiler 并运行 SSRS 报告 我找到了我需要的查询 带有参数值 并选择了它SQL 探查器 https i stack imgur com 8
  • 等待异步请求结果

    我想以某种方式异步验证 ABPadLockScreen 中的引脚 因为引脚未保存在设备上 我使用 Alamofire 进行 http 请求 并使用 PromiseKit 来实现承诺 我尝试过使用AwaitKit但问题是我陷入了僵局 我也尝试
  • Visual Studio 中用于打开解决方案中的文件的快捷键(热键)?

    Visual Studio 中是否有快捷键可以在不使用 Resharper 或任何其他工具的情况下在解决方案中查找并打开文件 接受的解决方案doesn t开发新版本 For 视觉工作室 2022 and 2019 2017请执行下列操作 U
  • MySQL:大型 VARCHAR 与 TEXT?

    我在 MySQL 中有一个消息表 用于记录用户之间的消息 除了典型的 ID 和消息类型 所有整数类型 之外 我还需要将实际消息文本保存为 VARCHAR 或 TEXT 我将前端限制设置为 3000 个字符 这意味着消息永远不会插入数据库中的
  • 在 Colab 上安装 Google Drive

    我正在尝试使用以下代码在 Colab 上安装我的驱动器 from google colab import drive drive mount content drive 我收到以下错误 298 Terminate the DriveFS b
  • 将 2 个 csv 数据集与 Python 合并为一个公共 ID 列 - 一个 csv 具有唯一 ID 的多个记录

    我对 Python 很陌生 非常感谢您的支持 我有两个 csv 文件 我正在尝试使用 Student ID 列合并它们并创建一个新的 csv 文件 csv 1 每个条目都有一个唯一的学生 ID Student ID Age Course s
  • 三个J - 如何拾取区域中的所有对象?

    我正在使用 Three js 我想知道如何获取给定区域中的所有对象 For example get all objects that found in the green square 解决方案 getEntitiesInSelection
  • 如果调试,Android 无响应。如果不在调试应用程序正常工作

    当我调试时应用程序遇到断点时 我可以正常调试一段时间 一段时间后 Android显示ANR对话框 但我仍然可以正常调试 如果我不点击手机屏幕 调试就会结束 所以调试时我需要一直盯着屏幕 这很烦人 而且真的浪费我的时间 因为有时对话框每 10
  • 从 MVC 5 控制器返回部分视图和 JSON

    在 MVC5 项目中 我打开一个模式对话框 如果出现异常 我想打开此对话框并在此对话框中的 div 上显示一条消息 据我所知 我应该遵循将partialview渲染为字符串的方法 但大多数示例在MVC5中不起作用从 ASP NET MVC
  • 在浏览器中编辑时锁定文件/内容。

    在我的一个项目中 允许用户编辑同一文件 这是小组工作 小组中的用户最多为 4 人 同时编辑的情况很少见 但有可能 我正在使用 ckeditor 显示内容 如何在编辑内容时锁定内容 对于上述情况 如果用户打开内容进行编辑 然后从不保存并保持窗