1

每个站点都应该有选项,可以通过控制面板进行更改。我的新项目将有这个。但是,我很好奇哪种方法是存储这些选项的最佳方法。

这是我已知的方法:

我已经测试了这些,虽然不是很彻底,因为很可能我不会发现长期的问题或好处。

  1. 使用带有字段key和的 MySQL 表value,其中每列是一个新的键/值对。这样做的缺点是 MySQL 可能很慢,事实上,在每个页面之前都需要一个循环来从数据库中获取选项并将其解析为数组。

  2. 使用 MySQL 表,每个值都有一个字段和一条记录。这样做的缺点是每个新选项都需要一个新字段,这不是 MySQL 表的标准用法,但一个很大的好处是它需要一个函数来将它带入 PHP 索引数组。

  3. 使用包含序列化形式的选项数组的平面文件,使用 PHP 函数serializeunserialize. 这种方法的主要问题是我必须首先遍历文件,读取整个文件,并且序列化可能很慢,因此随着创建更多选项它会变得更慢。它还为数据提供了一个小的混淆层。

  4. 使用ini文件。Ini 解析器相当快,并且此选项可以轻松传递站点配置。但是,如上所述,我将不得不遍历到 ini,而且,在 PHP 中使用 ini 文件通常是未使用的。

  5. 其他格式,例如XMLJSON,也都被考虑过。但是,它们都需要某种存储,我主要对每种存储的好处感到好奇。

这些是我具体的理想主义要求:

所以我要寻找的基本东西是速度、安全性和便携性。我希望配置不是人类可读的(因此,未加密的平面文件很糟糕),易于移植(排除 MySQL),并且几乎为零但持续的性能影响(排除大多数选项)。

我并不是要让人们为我编写代码,或者类似的东西。我只需要对这个问题再看一眼,可能会提出我从未考虑过的问题。谢谢你的帮助

谢谢你-丹尼尔。

4

1 回答 1

0

使用带有字段键和值的 MySQL 表,其中每列是一个新的键/值对。这样做的缺点是 MySQL 可能很慢,事实上,在每个页面之前都需要一个循环来从数据库中获取选项并将其解析为数组。

那是错误的。除非您计划存储几亿个配置对,否则您会很好。如果您担心使用此方法的性能,只需缓存查询(仅当您在表内进行更改时才擦除缓存)。这也将为您提供最大的灵活性、易用性等。

于 2013-05-15T07:53:22.490 回答