我想实现类似于维基媒体的修订历史的东西?最好使用的 PHP 函数/库/扩展/算法是什么?
我希望差异尽可能紧凑,但我很高兴只能显示每个修订版与其同级修订版之间的差异,并且一次只能回滚一个修订版。
在某些情况下,只有几个字符可能会发生变化,而在其他情况下,整个字符串可能会发生变化,因此我很想了解某些技术对于小变化是否比大变化更好,以及在某些情况下,简单地进行更改是否更有效存储完整副本。
使用 Git 或 SVN 之类的东西支持整个系统似乎有点极端,而且我真的不想将文件存储在磁盘上。
完整存储每条记录比存储它们的差异要容易得多。然后,如果您想要两个修订版的差异,您可以根据需要使用生成一个PECLText_Diff library http://www.horde.org/libraries/Horde_Text_Diff/library.
我喜欢将记录的所有版本存储在一个表中,并使用以下命令检索最新版本MAX(revision)
、“当前”布尔属性或类似属性。其他人更喜欢非规范化并拥有一个保存非当前修订的镜像表。
如果您存储差异,您的架构和算法会变得更加复杂。然后,您需要存储至少一个“完整”修订版和多个“差异”版本,并在需要完整版本时从一组差异重建完整版本。 (这就是 SVN 存储内容的方式。Git 存储每个修订版的完整副本,而不是差异。)
程序员的时间很昂贵,但磁盘空间通常很便宜。请考虑完整存储每个修订是否确实是一个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)