PHP应用程序应该将配置数据存储在定义的常量或数据库中


Should a PHP app store configuration data in defined constants or a database?

我正在开发一个PHP应用程序,我一直在反复讨论存储配置数据的最佳方式(这种类型可能偶尔会更改,但可能不会经常更改)。这主要包括许多非敏感信息,如某些令牌和cookie的有效期,或应用程序发送的各种电子邮件的参数,但也包括一些更敏感的信息,如API密钥。

  1. 将其存储在数据库表中-这是我最初开始走的路径,部分原因是我设想了一个方便的管理实用程序,允许系统管理员在必要时轻松修改这些值。但是,由于大多数应用程序页面都需要访问其中的一个或多个值,所以感觉就像是对数据库的大量过度访问,即使它们是小而快速的查找。

  2. 使用定义的常量-我还想过只使用定义的常数并将数据粘贴在.php文件中(当然是在web根目录之外)。这显然可以避免任何数据库查找,但不知何故,当给定的页面最多只需要几十个常量时,在每次页面加载时定义几十个常量也会让人觉得很浪费。

无论是出于安全、效率还是简单的风格考虑,是否推荐其中一种(或完全推荐其他东西)?

我见过同时具有这两种功能的大型系统。

将所有值存储在数据库中,以便轻松管理它们,同时还维护一个php文件,该文件包含每次在后端更改值时生成的常量。

如果你真的担心访问数据库的次数过多,这可能是你应该走的路。

任何一个选项都有效——这完全取决于您交付的产品。在分布到多个客户端的大型应用程序中,通常有一个简单的后端,他们可以在其中管理许多配置详细信息(如vBulletins ACP)。换言之,选项1更为常见,因为它提供了抽象层(出于您所述的各种原因)。