2013-05-31 3 views
2

Я разрабатываю CMS, который будет использоваться несколькими компаниями. Таким образом, у каждого пользователя будут свои личные предпочтения и настройки.PHP> Лучший способ хранения редактируемых пользовательских настроек для CMS

Поиск в форуме, я узнал, что сохранение настроек конфигурации в файле .ini может быть хорошим способом ... Но в моем случае каждый пользователь будет иметь возможность изменять свои настройки, когда захочет ,

Помня о том, что каждый пользователь будет иметь от 30 до 50 сохраненных параметров (только некоторые переменные/значения или несколько массивов), и каждый пользователь будет иметь свою собственную базу данных, но все файлы будут совместно использоваться на том же сервере ,

Итак, мне было интересно, что это лучший способ ...

1) БАЗА ДАННЫХ:

Чтобы создать «конфигурации» таблицы, которая будет хранить каждый параметр в виде строки, и приложение будет доступ каждый раз загружать настройки; что-то вроде этого:

строка 1 -> вар = "user_logo_url" // тип = "строка" // значение = "http://exemple.com/logo.jpg"

строка 2 -> вар = "some_array_value" // Тип = " массив»// значение =„сериализованное значение здесь“

2) XML:

хранить данные в файл XML и разобрать его, чтобы загрузить конфигурацию (или, возможно, загрузить на входе и сохранить его в $ _SESSION.

3) БАЗЫ ДАННЫХ и fwrite INI или файл PHP:

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

Я довольно новый на php, поэтому я не знаю, что лучше всего подходит для производительности приложения, и был бы признателен за любую помощь для этого!

Если я не был прояснен, пожалуйста, дайте мне знать!

Спасибо!

ответ

1

Я лично использовал бы базу данных. Просто создайте таблицу под названием «config» (или нечто подобное) с двумя полями: configId varchar (100), configValue varchar (255) (или введите текст, если вы ожидаете большого количества данных).

PHP-массивы могут быть сериализованы или вы можете использовать implode() для объединения их вместе с разделителем (для последующего повторного разделения с помощью explode()).

Пример:

$value = array("one", "two", "three"); 
$configValue = implode("|", $value); 

$configValue вернется: "one|two|three" в виде одной строки. Использование $value = explode("|", $configValue); изменит процесс.

+0

Спасибо за подсказку ... Но для загрузки всех строк конфигурации каждая страница не попала бы в производительность? Лучше ли загружать все конфиги при входе в систему и хранить в качестве $ _SESSION или загружать базу данных на каждую страницу и сохранять временную директорию меньшей (с меньшим количеством хранимых переменных сеанса). – RBR

+0

Это зависит от того, насколько вы безопасны. Если ничего важного (или безопасности) не будет сохранено в настройках, использование сеанса вполне приемлемо. Если, однако, вы сохраняете что-то вроде ключей доступа к API или чего-то, что должно оставаться скрытым, вам лучше звонить в базу данных каждый раз. EDIT: Я храню _some_ значения в сеансе, делая вызовы для других по этой причине. – ahwm

+0

Сначала нет важных значений для хранения, но действительно хорошо знать, что вы сказали о безопасности ... Так что даже будучи серверной стороной, $ _SESSIONS (а не файлы cookie) не настолько безопасны для хранения паролей, например? Еще раз спасибо =) – RBR

2

Я хранил настройки как строку json, попробуйте ...search json_encode и json_decode

+0

Я ничего не знаю о json, но теперь вы упомянули, я буду искать об этом. Спасибо! – RBR

0

Btw вы можете просто сохранить на db, и когда вы собираетесь загружать, вы загружаете глобальный var и сохраняете там запрос базы данных (имя и т. д.) или выполняете постоянное соединение с db или даже ini-файлом (используйте php .ini parse). В отсутствие производительности это будет, вероятно, то же самое, потому что им придется загружать, но если у вас есть веб-сайт, который некоторые конфигурации просто нужно загружать 1 раз, вы можете подключить db -> storage на var и использовать этот var для того, что вы

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