Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

http://docs.php.net/serialize

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

http://docs.php.net/serialize

Ответ 6

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

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

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

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

Ответ 7

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