gpt4 book ai didi

php - 如何存储配置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:07 24 4
gpt4 key购买 nike

我正在创建一个模块化系统,其中每个模块都与其他模块分开。我想将模块配置数据存储在数据库中,但我不知道最好的结构。

我有一些变体:

第一:

key_____|______value (primary key is `key`)
option1 | 1
option2 | abcd
option3 | bla-bla-bla

我可以轻松获取设置,但如果我想更新一些设置,我需要使用 CASE 构建硬(?)SQL 查询:

UPDATE settings SET value = CASE
WHEN key = option1 THEN 1;
WHEN key = option2 THEN abcd;

END
WHERE key IN (option1, option2, …)

如果有更好的变体可以在一个查询中更新多行(我将只使用 MySQLi 和 InnoDB),那就太好了。

第二:

module_____|_____settings
news | a:3:{s:7:"option1";i:1;s:7:"option2";s:4:"abcd";s:7:"option3";s:11:"bla-bla-bla";}

这样,我将使用设置序列化一个数组并将其放入数据库中。我想在 .php 文件中缓存未序列化的数据。但如果我有设置数组,我的序列化字符串将非常非常大。

第三:

option1 | option2 | option3
1 | abcd |bla-bla-bla

我将为一个选项键设置一列,但我认为创建一个表来存储一行是不必要的。


哪种变体最好?你能建议你自己的存储配置的方法吗?谢谢!

最佳答案

如果您决定将配置数据存储在数据库中,我总是会选择第一个选项。

它允许您轻松添加和更新配置值,而不会影响系统的太多其他部分。您只是略微考虑了更新值的复杂性。与其尝试将所有内容包装在一次更新中,不如为每个键编写单独的更新:

update settings set value = 1 where key = option1;
update settings set value = 'abcd' where key = option2;

选项二可能紧随其后,但我真的很讨厌在数据库中存储一大串序列化数据。如果这是您要采用的方式,请考虑将其存储在配置文件中。

我也参与过使用第三种选择的项目,但这是我最不喜欢的一种。每次添加/删除配置值时都必须添加/删除列是一件非常痛苦的事情。

关于php - 如何存储配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com