2012-03-29 4 views
1

В настоящее время я работаю над страницей, и я работаю в области «Настройки» (название, цвет фона, теги, описание и т. Д.).Как сохранить настройки

Так что я могу редактировать их быстро на панели администратора.

В настоящее время я думаю о таблице с именем | значением и называть ее в моем заголовочном файле (на каждой странице).

Теперь, если я когда-нибудь получить больше пользователей, то я кроме этого будет основно сделать запрос на большую часть времени дневных данных (название и другие настройки не меняются каждый день)

Так я думал об этом.

  • Я редко изменения настроек (ежемесячно макс)

  • Может вызвать функцию fetchsettings() всякий раз, когда я отправить форму на моей панели администратора, чтобы изменить некоторые параметры, которые основно удалить это содержимое настроек .php файл и вставить новые параметры в массив (массив с именем => значение

Почему бы я сделать что-то вроде этого:

I A m тихое новое в мире php, но я слышал, что настройки и переменные могут быть кэшированы, и это предотвратит запрос для каждого посещения и будет делать запрос только каждый раз, когда я что-то редактирую на панели администратора.

веселит,

Sarro

+0

Вы единственный, кто должен иметь возможность изменять настройки? Должны ли эти настройки печататься? Какие у них настройки? Связаны ли они со сценарием? – Shoe

+0

эти настройки доступны только для 1-3 человек (админ по интерфейсу администратора). Они должны настраивать общий вид и данные на Сайте (название, ключевые слова, описание и т. Д.) – keslol

ответ

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; 
+0

Файл не содержит данных доступа (параметры подключения дБ сохраняются жестко запрограммированными и будут для будущего месяца) как [F] (htaccess) блокировать пользователей, но позволит скрипту быть полезным сервером? – keslol

+0

Вы используете кеш-код операции? Если да, то какой? У вас есть доступ к memcache? Эти сведения о вашей среде являются ключевыми для решения наиболее эффективного решения. Каков ваш хостинг-стек - LAMP, WAMP, WIMP или другой? – nnichols

+0

Хост-стек должен быть LAMP, а atm i использовать кеш htacces для установки максимального времени кеша для файлов изображений и css. – keslol

1

Вы можете сохранить свои настройки в ini-файле. Легко визуализировать как человека и легко читать в PHP parse_ini_file.

Пример:

[environment] 
maintenance=false 

[database] 
dsn="mysql://localhost/test" 
username="username" 
password="password" 

Edit: Я согласен с Nnichols, вы, безусловно, следует хранить этот файл вне корня документа, так что он недоступен из Интернета (вы не» я хочу, чтобы кто-нибудь читал ваши настройки БД, не так ли?).

Также см. this SO question о написании его с панели администратора.

+0

вопрос теперь включает в себя генерировать php-файл с fetchsettings() или включить файл .ini и проанализировать его с помощью parse_ini_file. Я знаю, что это будет только разница в 0.xx секунд или даже меньше, но не первый метод будет быстрее? – keslol

Смежные вопросы