Quber
@Quber
PHP Team lead

Как правильно организовать хранение и чтение настроек сайта?

Собственно, разрабатываю сайт на php. Столкнулся с вечным вопросом хранения настроек сайта. Варианты, которые рассматривал: mysql база и ini файлы.

Но вот вопрос, если хранить настройки в базе, то когда происходит чтение из базы, мы совершаем запрос. А если надо прочитать 30 настроек, то будет +30 запросов, что при большой посещалке скажется на производительности.

Или стоит делать запрос в базу один и извлекать все необходимые данные сразу, а потом только их подставлять куда надо?
А если рассматривать ini файлы, то там тоже получается при каждом вызове настройки, необходимо каждый раз читать файл и каждый раз извлекать одно нужное нам поле. Или лучше читать весь файл сразу и извлекать из памяти необходимое? Тогда забивается память на мой взгляд.. как тогда быть? Как правильно организовать настройки и их чтение?

Прошу учитывать изначально хранение тысячу полей в настройках (как в cms это обычно бывает).
  • Вопрос задан
  • 9500 просмотров
Решения вопроса 2
shineblu
@shineblu
Добрый день,

Предложу тогда и свой вариант. Храните настройки в сериализованом виде: как только сайт открывается, он проверяет наличие файла (например: settings.dat), если файл найден - читает его и делает unserialize - на выходе получается массив настроек. Если файла нет - делаете запрос в базу (как предлгал @VasiliyIsaichkin) и затем полученный массив настроек сохраняете в файл (например settings.dat) через serialize функцию + при каждом изменении настроек CMS - удаляйте файл settings.dat и он будет снова синхронизирован с БД.

Успехов!
Ответ написан
Quber
@Quber Автор вопроса
PHP Team lead
Самые быстрые настройки для PHP-скриптов habrahabr.ru/post/112402
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@wordwild
Поскольку задаются такие вопросы, думается мне, что 30+ запросов к базе - не самый большой косяк на будущем сайте.
Храните в начале файла индекс точка похапе и дело с концом.
Ответ написан
Комментировать
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Если настройки меняются редко, то читать весь файл файл. Про память - вы плохо соотносите расходы на нее, у вас будет 1-2 кб, соединение с SQL съест гораздо больше.
Не там оптимизируете и не о том думаете. 30+ запросов вообще бред какой-то.
Для хайлоада можно использовать какой-нибудь НРСХД типа redis...
Ответ написан
Настройки хранить либо в базе, либо пхп файле. Некоторые хостинги не дают доступ к php.ini.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы