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

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

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

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

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

Solutions Collecting From Web of "Самый быстрый способ хранения легко редактируемых данных конфигурации в PHP?"

Сериализация – лучший вариант, чем 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', ); 

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

http://docs.php.net/serialize

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

<?php include("fileName"); ?>

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

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

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

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

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

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

http://docs.php.net/serialize

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

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

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

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

Если вы используете require вместо include для конфигурационного файла, вы получите немного производительности. Вы можете это сделать, если знаете, что файл конфигурации всегда будет на месте или когда у вас есть собственный механизм проверки, существует ли он.