【问题标题】:Using a plain text database in php在 php 中使用纯文本数据库
【发布时间】:2012-06-08 10:06:09
【问题描述】:

我正在为一个朋友开发一个小型 Web 应用程序,并且正在考虑使用纯文本文件而不是 MySQL,这对于这个应用程序的简单性来说似乎有点太多了。

该应用程序基本上可以让人们将他们的名字放在网络表单的列表中。一次可能会有大约 30-100 人将他们的名字列入名单,有时可能会超过 200-300 人。输入所有名称后,提交表单将关闭,单个用户将查看列表并可能很快将其删除。

我很好奇的是,如果有很多人试图同时将他们的名字放在名单上,是否会有任何问题。如果有人在服务器正在写入文件的过程中提交了一个名称,这会导致第二个人的提交失败,因为该文件已经在使用中,还是服务器会等待一个提交完成后再开始另一个提交?

【问题讨论】:

  • 如果 Mysql 太多并且你担心并发提交,也许 sqlite 是合适的。
  • .:我建议你改用数据库。使用 db,您的数据更安全。
  • 我支持使用真实数据库的建议。你越习惯它们,它们就越不会显得“有点太多”,即使是小任务也是如此。许多小任务不会永远保持小规模。
  • 我想这是真的,我很习惯使用它们。我的主要问题是我不确定运行应用程序的服务器是如何设置的。我将不得不确切地找出我有权在 MySQL 数据库方面做什么,如果事实证明我可以使用一个简单的列表,我真的不想为此烦恼。

标签: php database plaintext


【解决方案1】:

不,它不会等待,谷歌搜索“竞争条件”。如果提交表单的流量不大,那也无妨,但我还是建议使用mysql,因为努力是一样的。

【讨论】:

  • 我担心会出现这种情况,但不确定 PHP 究竟是如何处理这种情况的。我只需要与服务器的所有者讨论一下,看看是否可以接受使用 MySQL。
【解决方案2】:

我会使用一个简单的文本文件并逐行放置名称。 每次输入新名称时,只需通过

获取名称/行
$array_of_names = file("textfile.txt");

检查新行是否已经存在,如果不存在则添加新行。 上给出了一个确切的例子 http://php.net/manual/en/function.file.php

【讨论】:

  • 但问题是,如果两个或更多人尝试同时添加他们的姓名,则可能不会添加所有姓名。这种方法能防止这个问题吗?
  • @Alex 在 Web 开发中没有“同一时间”这样的东西。所有的动作都是一个接一个地完成,所以不用多想。欲了解更多信息,请阅读此en.wikipedia.org/wiki/Atomicity_(database_systems)
猜你喜欢
  • 2010-10-05
  • 2016-06-04
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多