XML vs PDO Mysql
1.
Кевин Митник (21.09.2012 / 18:16)
Нужно извлечь конфиги и вижу два варианта, из XML файла, или из базы. Проект должен быть отказоустойчивым, учитываються все мелочи, поэтому вопрос в том что лучше в плане производительности. Спасибо за дельные советы.
2.
Игорь (21.09.2012 / 18:40)
Если конфиг типа: Ключ=Значение
<?php
// Set
file_put_contents(PATH, serialize($string), LOCK_EX);
// Get
unserialize(file_get_contents(PATH));
3.
Кевин Митник (21.09.2012 / 18:43)
да не) спасибо конечно, но я не решений ищу, а совет в плане преимущества в производительности
4.
Azzido (21.09.2012 / 18:52)
Ну по тем данным,что ты дал нечего сказать, надо ж знать кучу мелочей,таких как количество параметров в конфиге,часто ли перечитывается конфиг, на каком типе hdd база данных (ssd ?). Для небольшого конфига я б конечно выбрал парсинг xml или json, незачем для этого ворочать базу данных,пока подключатся драйверы,пока произойдет выборка..
Добавлено через 03:57 сек.
и насчет отказоустойчивости,хоть это и редкости но случаются же лаги с сервером бд,а вот если конфиг на жд в одном месте с проектом то что помешает читать хml файл
5.
Кевин Митник (21.09.2012 / 19:39)
параметров ~ 50. конфиг читаеться каждый раз при обращении к скрипту. но это в принципе хз как, так как eAccelerator, а он кеширует откомпилированные скрипты.
Добавлено через 01:49 сек.
и да, в принципе можно ssd взять
6.
Петр (21.09.2012 / 20:41)
Если конфиг читается при каждом запуске, то запрос к базе будет кешироваться.
7.
Сергей (21.09.2012 / 20:51)
memcache используй
8.
Дмитрий (21.09.2012 / 22:39)
Я использую INI файлы для этих целей.
Если нагрузка слишком большая - то INI в связке с memcached.
Добавлено через 06:01 сек.
напр файл .ini:
ключ1="значение"
ключ2="значение"
ключ3="значение"
ключ4="значение"
[db]
host="localhost"
port=3306
name="ololo"
user="ololo"
pass="ololo"
и его подключение:
<?
$config = parse_ini_file('../core/ini/config.ini', true);
var_dump($config);
var_dump($config['db']);
9.
Сергей (21.09.2012 / 22:54)
8.
dima.london, в связке с мемкеш можно что угодно юзать. не обязательно ИНИ
10.
shilo (21.09.2012 / 23:42)
9, молодец, докопался до названия файла)
тоже советую ini. если нужна централизованность (т.е. например серверов с сайтом несколько), то конфиг можно хранить на одном сервере, а на все остальные импортировать кроном (т.е. чтоб обновлялся например раз в сутки или в час)
так же можно с xml. Использовать тут БД помоему безсмысленно
11.
Михаил (22.09.2012 / 01:07)
Как вариант жестко задать с помощью define
12.
Кевин Митник (22.09.2012 / 02:05)
11.
Flyd, тоже вариант. Рассмотрю его. Хотя скорее всего остановлюсь на XML, eAccelerator, memcached. Спасибо всем кто участвовал!
13.
Владислав (22.09.2012 / 21:07)
я бы использовал JSON вместо XML, json_decode($settings, TRUE); работает быстрее чем simplexml_load_string/file().
14.
Ant0ha (22.09.2012 / 21:10)
Ну, БД тоже можно использовать, хотя бы для удобства редактирования (кроме подключения к БД, естественно). Удобство в том, что можно сделать настройки для каждого модуля прямо из админки. Вот пример для коханы:
http://progik.ru/blog/ctenie-i-zapis-nastroek-v-KO3
Ну, и при высоких нагрузках можно и кэшировать как и всё остальное (xml, ini и тп).
А вообще, там удобно сделано, можно хранить и в БД и в php массивах, а запрашивать данные одним и тем же методом.
URL:
https://visavi.net/topics/34521