2

假设我有一个文件 urls.txt,其中包含我正在监视的 URL 列表。我的监视脚本偶尔会编辑该文件,例如,以指示每个 URL 是否可访问。我还想手动编辑该文件,以添加或更改 URL 列表。我怎样才能允许这样我在手动编辑时不必考虑它?

以下是一些可能的答案。你会怎么做?

  1. 从事黑客活动,例如让程序检查 vim 或 emacs 创建的锁定文件。因为这只是为了我,所以这实际上会起作用。

    • 如果人工编辑始终优先,则始终让人工破坏程序的更改(例如,忽略编辑器关于文件已在磁盘上更改的警告)。然后程序可以在下一个循环中重做它的更改。尽管如此,在用户编辑文件时更改文件并不是那么好。

    • 永远不要让人接触程序正在进行修改的文件。重新考虑设计并拥有一个只有人工编辑的文件和另一个只有程序编辑的文件。

    • 为人类提供一个自定义工具来编辑执行适当文件锁定的文件。这可能与锁定文件然后启动编辑器或自定义界面(可能是简单的命令行界面)一样粗略,用于从文件中插入/更改/删除条目。

    • 使用数据库而不是平面文件,然后自动处理所有锁定。

(请注意,我编写了 URL 监控示例以使其更加具体,并且因为我实际上想到的可能太奇怪和分散注意力——这个问题严格来说是关于如何让人类和程序都修改同一个状态文件。)

4

4 回答 4

6

我会使用数据库,因为这基本上是您必须构建的,以实现您想要的。为什么要重新发明轮子?

如果成熟的 DBMS 负担过重,请将文件分成两个并定期同步它们。URL 是否可访问听起来不像用户会更改的内容,因此不应由他们编辑。

在同步过程中(这将不得不锁定监视器和用户,尽管它可能是监视器的子功能),删除监视器文件中未在用户中完整的条目。此外,将已添加到用户文件中的那些添加到监视文件中(并开始监视它们)。

但是,我会为用户使用带有特殊前端的数据库方法,因为您现在可以获得相对较好的轻量级数据库。

于 2009-02-17T04:05:18.087 回答
2

使用合理的版本控制系统!

(Git 在这里工作得很好)。

也就是说,问题的本质意味着真正的数据库是最好的——它们通常具有数据库级、表级或行级锁定——然后将您需要的任何脚本放入版本控制中。

于 2009-02-17T05:21:40.650 回答
1

我会选择选项 3。事实上,我会让程序读取人工编辑的输入文件,并将每个查询的结果附加到日志文件中。通过这种方式,您还可以分析网站随时间的可达性。您还可以让程序维护一个文件,该文件指示输入文件中每个站点的当前可达性状态,作为当前状态的快照。

于 2009-02-17T04:41:50.590 回答
0

另一种选择是使用两个文件,一个用于自动访问,一个用于手动访问。您需要在用户文件中使用一种方法来指示修改或删除,但在其他一些解决方案中也会遇到类似的问题。

于 2009-02-17T11:52:26.780 回答