Запись настроек в файл
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Запись настроек в файл
Здравствуйте товарищи форумчане =). Делаю настройки сайта с сохранением в файл. Можно ли как-нибудь сделать проверку, были ли сделаны изменения полей перед отправкой формы и те которые пользователь изменил - перезаписать, а остальные не трогать? И еще одно: все комментарии из файла удаляются, как этого избежать?
Re: Запись настроек в файл
записывать в базу )
У Вас сразу 2 проблемы отпадут.
У Вас сразу 2 проблемы отпадут.
- Ghost_nsk
- Сообщения: 825
- Зарегистрирован: 2012.01.01, 00:45
- Откуда: Новосибирск
- Контактная информация:
Re: Запись настроек в файл
а чем запись в базу не подходит?bohdantheone писал(а):Здравствуйте товарищи форумчане =). Делаю настройки сайта с сохранением в файл. Можно ли как-нибудь сделать проверку, были ли сделаны изменения полей перед отправкой формы и те которые пользователь изменил - перезаписать, а остальные не трогать? И еще одно: все комментарии из файла удаляются, как этого избежать?
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
способом хранения, например в файле есть:
'rezols' =>
array (
1600 => 1200,
1440 => 900,
1024 => 768,
),
Можно конечно парсить из базы обратно в массив, но нужно тогда все переделать.
'rezols' =>
array (
1600 => 1200,
1440 => 900,
1024 => 768,
),
Можно конечно парсить из базы обратно в массив, но нужно тогда все переделать.
Re: Запись настроек в файл
id |key |value
1 |rezols |{"1600" : "1200", "1440" : "900", "1024" : "768"}
1 |rezols |{"1600" : "1200", "1440" : "900", "1024" : "768"}
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Запись настроек в файл
Лучше тратить время на изобретение велосипеда, чем один раз взять и переделать? Переделывание - это неотъемлемая часть программирования. Не нужно этого бояться.bohdantheone писал(а):Можно конечно парсить из базы обратно в массив, но нужно тогда все переделать.
Twitter: @timlar_ua
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
просто хранить настройки в БД более трудоемко нежели в файле, если например имеется так з 20 различных опций, а вообще рекомендуют в INI файлах.
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Запись настроек в файл
А в ini-файлах не трудоемко? Как минимум потеря быстродействия (постоянный парсинг ini-файла). На одном файле, скорее всего, будет незаметно, но на большом количестве очень заметно. Был у меня проект, который был написан на Zend фреймворке, там было много конфигов и все они были в ini-файлах. Тормозило нереально. Прогнал профайлером - 70% времени тратилось на парсинг ini-файлов. После перевода на обычные php-массивы проект стал просто летать.bohdantheone писал(а):просто хранить настройки в БД более трудоемко нежели в файле, если например имеется так з 20 различных опций, а вообще рекомендуют в INI файлах.
Как по мне, идеальный вариант хранить пользовательские настройки в базе и кэшировать их. При изменении настроек сбрасывать кэш и кэшировать заново.
Twitter: @timlar_ua
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
Вот это ближе к "телу". А где-то можно увидеть реализацию последнего? Проверять на isNewREcord, сбрасывать кеш, сохранять и вновь в кеш?Как по мне, идеальный вариант хранить пользовательские настройки в базе и кэшировать их. При изменении настроек сбрасывать кэш и кэшировать заново.
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Запись настроек в файл
Поищи по форуму. Я когда-то давно поднимал такую же тему. Там же приводил свою реализацию (в последствии переписанную немного иначе), а так же еще несколько человек приводили свои варианты.
Twitter: @timlar_ua
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
Вот нашел в теме viewtopic.php?f=3&t=797&start=30
товарищ pegas1981 описалне плохой вариант, только вот я правильно понял, у него в БД, что только id и param?
товарищ pegas1981 описалне плохой вариант, только вот я правильно понял, у него в БД, что только id и param?
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Запись настроек в файл
Бегло посмотрел код. Это реализация сохранения параметров для каждого пользователя. Сами параметры сериализуются и пишутся в одно поле. Я бы на его месте не сериализовал, а писал в JSON-формате. И редактировать проще (в случае чего) и по скорости быстрее.
Twitter: @timlar_ua
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
тогда уже лучше твой вариант попробую, а то что-то сильно мудрено с одним полем
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
Что-то я не могу разобраться с логикой. Например есть в таблице записи:
Вот контроллер:
Все остальное, как ты описывал.
Как в представлении правильно добраться до записей в БД?
param(name) - это обращение к файлу с настройками, а сохранить то как тогда, чтобы в БД произошли изменения? запутался что-то я
Вот контроллер:
Код: Выделить всё
<?php
class OptionsController extends Controller
{
public function accessRules()
{
return array(
array('allow', // allow admin user to perform actions
'actions'=>array('index'),
'roles'=>array('2'),
),
);
}
public function actionIndex()
{
$model = new Options;
$this->pageTitle = 'Настройки сайта '.$model->name;
if(isset($_POST['Options']))
{
$model->attributes = $_POST['Options'];
$model->save();
if($model->save())
Yii::app()->user->setFlash('success', "Настройки успешно сохранены!");
}
$this->render('index', array(
'model' => $model
));
}
}
Как в представлении правильно добраться до записей в БД?
param(name) - это обращение к файлу с настройками, а сохранить то как тогда, чтобы в БД произошли изменения? запутался что-то я
Re: Запись настроек в файл
я делаю компонентом
примерно так, вносил потом еще изменения, но исходников нет под рукой
viewtopic.php?f=3&t=8141#p48661
ну а редактирование - в БД табличным вводом
примерно так, вносил потом еще изменения, но исходников нет под рукой
viewtopic.php?f=3&t=8141#p48661
ну а редактирование - в БД табличным вводом
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Запись настроек в файл
Не читал всю тему, но не увидел решения с CConfiguration, оно не подходит?
Код: Выделить всё
$file = Yii::getPathOfAlias('application.configs') . 'test.php';
// load
$config = new CConfiguration($file);
// access and setup
$config['myOption'] = 'value';
echo $config['mySecondOption'];
// save
file_put_contents($config->saveAsString());
Жду Yii 3!
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
нужно сначала 1 метод попробовать, чтобы переходить к другому. С табличным вводом разобрался - в базу сейвит. Не сейвит в файл:
Код: Выделить всё
public static function initOptions() {
$model = Yii::app()->cache->get('optionsModel');
if($model === false) {
$model = Options::model()->findAll();
Yii::app()->cache->set('optionsModel', $model, 5184000);
}
foreach ($model as $data) {
if($data->state == 'true') $data->state = true;
elseif($data->state == 'false') $data->state = false;
Yii::app()->params[$data->name] = $data->state;
}
}
}
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
на этот вариант ошибочка:mc-bear писал(а):Не читал всю тему, но не увидел решения с CConfiguration, оно не подходит?Код: Выделить всё
$file = Yii::getPathOfAlias('application.configs') . 'test.php'; // load $config = new CConfiguration($file); // access and setup $config['myOption'] = 'value'; echo $config['mySecondOption']; // save file_put_contents($config->saveAsString());
"Карта должна быть представлена массивом или объектом, реализующим интерфейс Traversable."
-
- Сообщения: 135
- Зарегистрирован: 2012.08.19, 14:31
Re: Запись настроек в файл
Товарищи знатоки, скажите будет ли эффективным такой метод?
Код: Выделить всё
public static function initOptions() {
$model = Yii::app()->cache->get('Options');
if($model === false) {
$model = Options::model()->findAll();
Yii::app()->cache->set('Options', $model, 3600*60*24);
}
$params = array();
foreach ($model as $data) {
$params[$data->name] = $data->description;
}
file_put_contents(
Yii::getPathOfAlias('application.config.test') . '.php',
'<?php return ' . var_export($params, true) . ';'
);
}
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Запись настроек в файл
А ты отдаешь себе отчет, что если одновременно кто-то больше чем один, захочет записать настройки в файл, будут проблемы?
Жду Yii 3!