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