2

我正在开发一个将被多家公司使用的 CMS。因此,每个用户都会有一些个人偏好和设置。

在论坛中搜索,我发现将配置设置存储在 .ini 文件中可能是一个不错的方法......但在我的情况下,每个用户都可以选择随时更改自己的设置。

请记住,每个用户将存储 30 到 50 个选项(只是一些变量/值或几个数组),并且每个用户将拥有自己的数据库,但所有文件将在同一服务器中共享。

所以,我想知道什么是最好的方法......

1) 数据库:

创建一个“配置”表,将每个设置存储为一行,应用程序每次都会访问数据库以加载设置;类似的东西:

第 1 行 -> var = "user_logo_url" // type = "string" // value = " http://exemple.com/logo.jpg "

第 2 行 -> var = "some_array_value" // type = "array" // value = "这里的序列化值"

2)XML:

将数据存储到 xml 文件中并解析它以加载配置(或者可能在登录时加载并将其存储在 $_SESSION.

3) DATABASE 和 fwrite 一个 INI 或 PHP 文件:

好的,我什至知道它是否可能,但它会将所有设置存储在数据库中(以便于管理),然后使用 fwrite 将设置作为变量保存在 php 文件中,然后拥有加载设置时性能更好。

我对 php 很陌生,所以我不知道考虑到应用程序性能的最佳方法是什么,并且希望对此有任何帮助!

如果我有什么不清楚的地方请告诉我!

谢谢!

4

3 回答 3

2

我将设置存储为 json 字符串,试一试...搜索 json_encode 和 json_decode

于 2013-05-31T18:16:26.990 回答
1

我会亲自使用数据库。只需创建一个名为“config”(或类似名称)的表,其中包含两个字段:configId varchar(100)、configValue varchar(255)(如果您预计会有大量数据,请键入文本)。

PHP 数组可以被序列化,或者您可以使用implode()分隔符将它们连接在一起(稍后使用 重新分隔explode())。

例子:

$value = array("one", "two", "three");
$configValue = implode("|", $value);

$configValue将返回:"one|two|three"作为单个字符串。使用$value = explode("|", $configValue);将逆转该过程。

于 2013-05-31T18:12:49.037 回答
0

顺便说一句,你可以只保存在 db 上,当你要加载时,你加载一个全局变量并在那里保存数据库请求(web 名称等),或者与 db 甚至通过 ini 文件建立持续连接(使用 php .ini 解析)。在缺乏性能的情况下,它可能是相同的,因为它们必须加载,但是如果您有一些配置只需要加载 1 次的网站,您可以在 var 上连接 db -> storage 并使用该 var 来满足您的需要

于 2017-08-04T15:20:23.020 回答