Самый быстрый способ хранить легко доступные для редактирования данные конфигурации в PHP?

Что самый быстрый путь состоит в том, чтобы хранить данные конфигурации в PHP так, чтобы это было легко изменяемо (через PHP)? Сначала я думал о наличии config.php файл, но я не могу отредактировать его на мухе с PHP, по крайней мере, не очень просто? Тогда я думал о наличии XML-файлов, но парсинг их для каждого Запроса HTTP является подавляющим. Так, я думал о файлах INI, но тогда я полагал, что файлы INI ограничиваются значениями интервала/строки. В конце я пришел к выводу, что закодированный файл JSON является лучшим:

$config['database']['host'] = ...;
$config['another']['something'] = ...;
...
json_encode($config);

Так как JSON может сохранить массивы, я могу создать довольно сложные конфигурации с ним, и он анализирует быстрее, чем файлы INI.

Мой вопрос: я пропускал что-то или являюсь там лучшим способом сделать это?

23
задан Tower 6 January 2010 в 19:50
поделиться

6 ответов

Сериализация - лучший вариант, чем JSON для хранения переменных PHP.

Мне нравится использовать var_export для сохранения файла конфигурации и использовать include для загрузки информации конфигурации. Это упрощает программное сохранение данных конфигурации И упрощает чтение / запись данных для человека:

config.php:

return array(
 'var1'=> 'value1',
 'var2'=> 'value2',
);

test.php:

$config = include 'config.php';
$config['var2']= 'value3';
file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');

Обновленный config.php теперь содержит следующее:

return array(
 'var1'=> 'value1',
 'var2'=> 'value3',
);
38
ответ дан 29 November 2019 в 01:51
поделиться
[

]Вы должны использовать сериализацию в отличие от json_encode:[

] [

][]http://docs.php.net/serialize[][

]
2
ответ дан 29 November 2019 в 01:51
поделиться
[

]Способ хранения конфигурации - поместить некоторые переменные во внешний .php файл, а затем, когда я захочу использовать эти файлы, я скажу:[

] [

][][][

] [

]И это позволит вам обмениваться конфигурационной информацией на многих страницах. Я, однако, не уверен, что это самый эффективный метод, но мне показалось, что он самый простой.[

].
2
ответ дан 29 November 2019 в 01:51
поделиться
[

]Я уверен, что вы правы насчет значений int/string и да, JSON - это способ, но сериализация и несериализация строки будет быстрее для оптимизации скорости:[

] [

]Эта ссылка поможет вам:[

] [

][]http://docs. php.net/serialize[][

]
0
ответ дан 29 November 2019 в 01:51
поделиться

Хотя это, скорее всего, излишек для того, что вам нужно, но я обычно сохраняю данные конфигурации в базе данных, используя класс PHP для управления изменениями пар имя / значение. в. (т.е. нет прямого доступа к БД извне этого класса.)

Когда вызывается класс конфигурации PHP для изменения значения, он затем записывает стандартный включаемый файл PHP со всеми различными значениями, определенными в нем.

Таким образом, при чтении данных конфигурации не снижается производительность во время загрузки, и все данные конфигурации могут быть изменены в базе данных с помощью модуля CMS.

2
ответ дан 29 November 2019 в 01:51
поделиться

Я использую базу данных с таблицей под названием config или settings. Таблица состоит из двух столбцов:

name [varchar(255)]
value [varchar(255)]

Это позволяет легко хранить строки типа int, float и short.

Затем я создаю две функции: GetSetting и SetSetting. Они хранят строку и извлекают строку соответственно. Я считаю, что это значительно упрощает хранение значений.

0
ответ дан 29 November 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: