【问题标题】:deltified document revision control in PHPPHP中的deltified文档修订控制
【发布时间】:2009-12-16 07:01:35
【问题描述】:

如果我有一个允许用户更改文档的 PHP 应用程序,那么对每个文档实施修订跟踪的最佳方法是什么?我希望每个修订版的存储都像 svn 和其他 SCM 对代码所做的那样进行删除(即只保存所做的更改)。我很简单地知道它是如何工作的,但是当我开始考虑实现它时,我有点困惑。

首先,我想知道是否有图书馆可以帮助我解决这个问题,所以我不必完全自己动手。

我想知道:我应该只保留原始文档的全文,然后只保存更改,还是应该保留最新文档的全文,每次修改时,将差异保存为旧版本之一?

如果是前者,那么当我想抓取一个页面显示在网站上时,我是否必须从头开始,然后根据修订递归更新数据,直到达到当前版本?一旦有很多修订,这会不会很慢?

如何在 PHP 中进行 diff/patch 类型的操作以使页面的 detifying 和重构更容易?

在编辑页面时锁定页面是否值得?或者让页面进入“冲突状态”并进行冲突解决操作——让两个用户同时修改同一个页面,如果他们正在修改不同的部分等等——我会疯狂地想这会有多难。啊!

【问题讨论】:

    标签: php diff patch revision


    【解决方案1】:

    这个previous SO question 可能会有所帮助。

    【讨论】:

    • 谢谢,这将有助于解决差异,但是存储修订的语义呢?
    • 我强烈建议完整存储最新版本,然后将历史记录存储为差异。否则,您将遇到为当前版本提供服务的巨大性能瓶颈(这可能是您的大部分请求)。
    • 另外,就冲突解决而言 - 我会使用 Mediawiki 使用的相同系统。跟踪用户何时开始编辑页面,以及上次编辑文档的时间。如果最后一次编辑时间晚于用户开始编辑的时间,当用户保存时会显示一个冲突页面,其中包含新版本和他们编辑的版本,并要求他们要么取消保存,要么编辑新版本到添加他们的更改。它的实现相当简单,用户使用起来也相当容易。
    【解决方案2】:

    为什么不使用颠覆服务器?您可以使用exec() 或类似方法从控制台访问客户端。除非您正在编写修订软件,否则真的不值得从头开始实施类似的东西。

    【讨论】:

    • 这就像维基百科和其他维基网站所做的那样。我相信在 wordpress 中也有办法做到这一点,它适用于 CMS。我想让整个系统存在于一台服务器上,并且尽可能少的依赖,因为它将被分发
    猜你喜欢
    • 2018-03-03
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2013-03-31
    相关资源
    最近更新 更多