如何创建文本差异Web应用程序

时间:2010-04-05 20:54:45

标签: php mysql database-design web-applications

主意

我想为自己创建一个小应用程序来存储想法(事情是 - 我想让它做我的方式)

数据库

我在想简单:

id       - unique id of revision in database
text_id  - identification number of text
rev_id   - number of revision
flags    - various purposes - expl. later
title    - self expl.
desc     - description
text     - self expl

  • flags - 如果我(即)添加标记rb;65,而不是存储整个文本,我只是说,每当我要求最新版本时,我再次使用DB并检查修订版65

问题:这个设置最好吗?存储差异或整个文本(我知道,空间便宜......)更好吗?该修订标志是否有意义(仅复制文本不是更好 - 更多的磁盘空间,但更少dbphp处理。

PHP

我在想,我会在这里和PEAR一起去。虽然要点是open-edit-save,但是查看修订版本的可能性并不难以编程,并且在某些情况下可以节省生命(好的想法被删除,保存错误的版本等等)。

然而,我从未在长时间或全项目关系中使用过PEAR,但是,在我以前的经历中短暂的遭遇留下了相当不好的感觉 - 我记得,它实施起来太困难了,缓慢而且非常庞大玩,所以我不知道,如果有什么更好的。

更新:似乎有更多的文本差异预制库,有些甚至比PEAR更轻,所以我可能需要深入研究它。

为什么?

虽然有各种各样的时间/项目/理念管理工具,但是一切都缺乏对我来说,无论是与用户共享,同步更多PC,时间跟踪,项目管理......我相信,这篇文章diff webapp将在以后与各种不同的工具一起内部使用。因此,如果您知道任何优秀且具有良好UI功能的项目管理应用程序,并且支持大量使用文本,请告诉我,这样我就可以节省时间,而不是重新设计。

3 个答案:

答案 0 :(得分:2)

我认为你的问题只是沸腾到一行(如果还有别的东西,请告诉我,我会加上):

  

存储差异或整个文本(我知道,空间便宜......)更好吗?

除非你真的需要节省空间,否则最好存储整个文本。查看文本将比检查差异更常见,并且如果某些内容有很多修订,则可能是为最新版本“构建”文本的重要过程。想象一下,您已经完成了数千次修订的频繁使用的页面,而“全文”只与原始文件一起存储。然后你必须处理成千上万的差异只是为了查看最新的文本,而不是直接从数据库中拉出来。

如果您想妥协,每次计算任意两个修订版之间的差异时,请将其存储在单独的表中。然后你只需要计算任何给定的差异一次,所以下次你查看相同的差异时它将是即时的。如有必要,可以每隔一段时间修剪一次该表,以删除长时间未访问的差异。

答案 1 :(得分:0)

这是一个php diff函数:http://paulbutler.org/archives/a-simple-diff-algorithm-in-php/

这是另一个:holomind.de/phpnet/diff.php

答案 2 :(得分:0)

如果您要存储许多不同版本的文件,git可以为您提供很多帮助。