在服务器上保存单个值的位置

10

我正在创建一个带有点击拨号按钮的HTML页面应用程序。

将会有一个人负责接听电话。我想让这个人能够在我的服务器上设置一个布尔变量: 1表示可用,0表示不可用。

我可以创建一个单字段的SQL表,但这感觉像是杀鸡焉用牛刀;或者我可以读写包含一个字符的文本文件。

哪种是存储单一值最正确的方式?


3
没有正确的方法。实现取决于您具体的(对我们来说未知的)要求。如果文本文件对您而言似乎是最简单的选项,请使用它。 - Steve
4个回答

7

我知道对于这个问题来说使用一个小数据库表看起来过度了。如果你的应用程序已经使用了数据库,那么这绝对是最好的方式去处理。你所使用的数据库技术有各种支持来储存数据以便不会丢失。但是,如果只是为了这一个数据点而去建立一个数据库并组织应用程序去使用它,那么使用文件将会更加容易。

(WordPress也做了类似的事情; 它使用一个名为wp_options的表格来包含许多一次性设置数值。)

我建议你的表格包含两列(或更多),即agent_id和available。这样,如果你想再添加另一个人接电话,你的应用程序就已经准备好处理这种增长。当前的人可以将agent_id设置为0。


1
我会选择这个答案,因为: - grateful
我已经有一个MySQL数据库,我将选择这个答案,因为:1. 服务器上的文件可能会被移动或删除,而MySQL表没有通过FTP访问,因此我(或其他人)意外地整理它的机会较小,2. WordPress架构的参考使得答案更加可信(据我所知,WordPress运行良好,并且是成千上万聪明人的努力的结果),未来我可能还需要存储其他一次性值,3. 即使在非常小的规模上也具有可伸缩性,具有潜在用处。 - grateful
没错。如果WordPress做了某件事,那么这件事肯定足够好地完成工作。 - O. Jones

3
如果你已经设置了数据库,我建议使用它。这就是数据库的用途,持久化可变数据。否则,你基本上是为了一个设置编写自己单独的数据库系统,这在我的眼中是过度杀伤力的!保持一致性和灵活性是有价值的。如果我突然需要存储预期的返回时间怎么办?我如何在文本文件中实现这个目标,如何区分列?如何操纵数据?MySQL已经为你解答了所有这些问题。
作为团队成员,我希望我的大多数开发同事(和新员工)都知道如何使用MySQL。我不想让他们使用、扩展或调试我添加的独立定制文件持久化系统。
如果你担心散布着很多行表,请使用一个表来处理常规更新的杂项单一配置变量。我们有一个类似下面的表:
Table: `setting` 
Columns: `key_string` VARCHAR, `value` VARCHAR

并且可以将您的变量存储为

['key_string' => 'telephone_service_available', 'value' => '1']

1
感谢您的回答。关于团队合作和理解标准做事方式与定制化解决方案之间的区别的解释非常有用。 - grateful

1
在这种情况下,一个简单的文件检查(存在文件或不存在)可能是您可以在此处执行的最简单的方法。它还具有轻松检查文件是否存在的好处,您不必读取文件内容。但如果您需要更多信息,您必须采取完全不同的方式。

0

这取决于您之后想如何处理这些信息。

如果您在Web应用程序中使用它,请将其存储在会话中。

或者,尝试使用平面文件数据库,如SQLite(无需活动DBMS)。它很容易使用,并且可以轻松扩展。

或者只需创建一个带有二极管信息的文件。如果文件不存在,则关闭。


这里真的不需要一个会话变量,我也不建议在没有非常充分的理由的情况下添加另一个独立的数据库。 - Arth
我不知道他需要变量的方式,也不知道他是否已经有了数据库。 - chris01
很好,他可能还没有设置数据库...但很明显接听电话的人不仅是让自己知道他们不可用。 - Arth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接