存储PHP应用程序设置的最佳方式?

2022-08-31 00:30:38

为自定义 PHP 应用程序存储一组全局设置的最佳方法是什么?我正在处理一个个人项目(实际上是第一个主要项目),并且需要一种存储键值对的方法,以记录应用程序的整体设置。

要存储的东西...

  • 网站的全局名称。
  • 主题(只是一个变量或主题路径)

我应该把它们放在一个表格里吗?如果是这样,从助推器中查询它们的最佳方法是什么?除了为每个所需的设置执行单个查询。


更新:是的,.ini或解析包含文件会很好,我知道如何做到这一点。但是我想知道将它们与其他所有内容一起存储在MySQL中的最佳方法是什么。


UPDATE2:我问这个问题的原因也是我计划通过管理员界面更改很多这些设置。因此,如果您要更改站点的标题,它将立即更新,我认为最好通过SQL进行,因此需要在DB内部进行设置。


答案 1

对于一个单一的,小的,简单的网站,我只是把配置放在一个PHP文件中。保持简单。PHP解析速度可能并不比解析PHP快。如果使用 APC,编译后的字节码甚至会被缓存 - 尽管字节码随后会为每个请求重新执行。对于一个小的配置文件,这个字节码的执行应该只需要很少的时间;对于非常大的文件,可能需要更长的时间。

对于具有大型配置的高流量站点,在APC中缓存配置数据(例如作为单个阵列)是一个好主意 - 至少,您可以节省实际执行config.php文件中语句的开销。值得注意的是,Facebook就是这样做的。当您每秒处理许多请求时,点击磁盘以读取每个请求的配置文件(使用parse_ini_file,XML解析器等)是不可能的。

对于我当前的项目,我们托管了许多站点,每个站点都有自己的配置。每个站点都有一个数据库和一个配置文件;但是,确保您始终使用正确的配置文件和正确的数据库可能会成为一个令人头疼的问题。此外,更改将需要在两个位置进行更改 - db和配置。忘记一个或另一个总是会引起问题,而且它发生得太频繁了。

我们将配置移到数据库中,这样您就不可能将数据库与其正确的配置分开,并且任何代码更改只需要更新数据库。配置表中的数据也会主动缓存在 APC 中,因此我们很少查询它。

所以,回顾一下:

  1. 小网站:只需使用一个config.php文件
  2. 非常大的站点:在APC中缓存
  3. 多个站点:将配置存储在数据库中,以减少管理开销;在 APC 中缓存以减少数据库命中率

答案 2

你有没有想过把它们放在一个文件中,并把它包含在你需要使用它们的页面上?为变量指定一个唯一的名称,以避免命名冲突。.php

由于您将在PHP应用程序中重复使用它们,因此这将是最理想的选择。这也避免了在将数据库存储在数据库中时进行数据库调用的需要。

AppSettings.php

<?php
$_SITENAME_ = 'MyWebsite';
$_THEME_ = 'Theme/Path';
?>

更新:

我假设您希望这些设置可以通过网页进行编辑,并且不希望使用多个数据库查询,因为这些设置会更改,但不会太频繁?

我个人采用的一种方法是序列化 AppSettings 表并将其存储在文件中。当然,每次更新表时,表都会被重新序列化并存储在 XML 文件中。然后,我创建了一个单独的类,用于分析 XML 文件并返回所需的特定值。XML


推荐