我目前正在处理某个页面,我正在设置“设置”区域(标题,背景颜色,标签,说明等)。
所以我可以在管理员面板上快速编辑它们。
目前我正在考虑一个名为| value的表,并在我的include(每页)头文件中调用它。
现在如果有一天我会得到更多的用户,那么除了这个基本上会查询大部分时间的旧数据(标题和其他设置不会每天更改)
所以我想到了这一点。
我很少会更改设置(每月最多)
每当我在管理面板上提交表单时,可能会调用函数fetchsettings()来更改一些设置,这些设置基本上删除了settings.php文件的内容,并将新设置粘贴到数组中(数组名为= >值
为什么我会这样做:
我在php世界中很安静,但我听说设置和变量可以被缓存,这会阻止每次访问的查询,并且每次我在管理面板上编辑时都只会进行查询。
欢呼声,
sarro
答案 0 :(得分:1)
从性能角度来看,以这种方式将数组写入文件是一种很好的方法。包含该数组的文件可以由您的操作码缓存缓存,这比从每个请求的表中读取设置更可取。该文件应存储在文档根目录之外,或至少以某种方式受到保护。
UPDATE 由于您没有操作码缓存,因此使用PHP数组似乎毫无意义,而只是将存储的数据序列化到文件中。这是一个简单的单例配置类,您可以将其用作起点。如果文件不存在,您可以完全删除在db中存储配置或修改构造函数以从db读取配置数据。
<?php
class Config {
private static $instance;
private $changes = false;
private $config;
private $file = './config.dat';
private function __construct() {
$this->config = unserialize(file_get_contents($this->file));
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Config();
}
return self::$instance;
}
public function __set($name, $value) {
$this->config[$name] = $value;
$this->changes = true;
}
public function __get($name) {
if (array_key_exists($name, $this->config)) {
return $this->config[$name];
}
return null;
}
public function __toString() {
return print_r($this->config, true);
}
private function saveChanges() {
file_put_contents($this->file, serialize($this->config));
}
public function __destruct() {
if ($this->changes) {
$this->saveChanges();
}
}
}
$config = Config::getInstance();
print $config;
答案 1 :(得分:1)
您可以将设置存储在ini文件中。易于在人类中可视化,易于阅读PHP parse_ini_file
。
样品:
[environment]
maintenance=false
[database]
dsn="mysql://localhost/test"
username="username"
password="password"
编辑: 我必须同意Nnichols,你当然应该将这个文件存储在文档根目录之外,这样它就无法通过网络访问了(你不希望任何人阅读你的数据库设置,对吗?)。
此外,请参阅this SO question,了解如何从管理面板向其写信。