У меня есть небольшое приложение, которое я разрабатываю, чтобы я мог отдавать/продавать другим. Я хочу сохранить некоторые настройки и создать интерфейс администратора для их изменения. Что было бы лучшим способом их хранить? Таблица DB кажется излишней для 10-20 настроек, которые у меня есть, и я хочу, чтобы поиск этих параметров был как можно быстрее. Является ли плоский файл еще одним жизнеспособным вариантом? Каковы подводные камни, связанные с использованием плоского файла? Каким будет самый быстрый/простой способ взаимодействия с плоским файлом, хранящим несколько ключей и значений?Каков наилучший способ сохранения настроек PHP-приложений?
ответ
Я часто использую РНР parse_ini_file
для этого.
Так что, если вы пишете .ini файл с этим:
; This is a sample configuration file
; Comments start with ';', as in php.ini
[first_section]
one = 1
five = 5
animal = BIRD
[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"
и читать его с этим PHP код:
define('BIRD', 'Dodo bird');
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
Вы получите этот результат:
Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
)
[second_section] => Array
(
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)
[third_section] => Array
(
[phpversion] => Array
(
[0] => 5.0
[1] => 5.1
[2] => 5.2
[3] => 5.3
)
)
)
PHP имеет функции для чтения файлов .ini.
оо, бить на 10 секунд. :) –
С копией пасты из php docs: P cheap –
Я пошел на лишнюю милю, добрый сэр! ;) –
Рассмотрите объект (или массив) PHP, сериализованный в файл. Отсутствует код для синтаксического анализа, достаточно быстрый, расширяемый. Одно из предостережений - подумать о стратегии «обновления» файла настроек по мере роста вашего кода для поддержки дальнейших настроек.
Я думаю, что XML через SimpleXMLElement очень полезен для такого рода вещей.
Конфигурация (config.xml):
<config version="1">
<foo>value</foo>
<bar>
<baz>Boo</baz>
</bar>
</config>
код, чтобы прочитать его:
$config = simplexml_load_file('config.xml');
$version = (int) $config['version'];
$foo = (string) $config->foo;
$baz = (string) $config->bar->baz;
Код для записи в файл:
$config = new SimpleXMLElement('<config version="1"/>');
$config->foo = 'value';
$config->bar->baz = 'Boo';
$config->asXML('config.xml');
Основной ловушкой использования плоских файлов заключается в том, что это может привести к возможному повреждению данных при сбое сценариев или одновременном редактировании.
Это действительно зависит от типа настроек, которые вы хотите сохранить. Являются ли они «загрузочными» настройками, такими как хост БД, порт и логин? Или это настройки приложений специально для вашего приложения?
Проблема с предоставлением интерфейса администратора для записи файла в файловой системе - это разрешения, необходимые для записи в файл. Каждый раз, когда вы открываете веб-сервер для записи файлов, вы увеличиваете вероятность того, что ошибка в коде может привести к серьезной эскалации привилегий.
Базы данных предназначены для чтения и записи без возникновения потенциальных рисков безопасности системы.
Мы используем «сгенерированные» PHP-файлы для хранения статических данных конфигурации (например, информации о доступе к базе данных). Он создается скриптом утилиты пользователем в командной строке. После этого вся нестатическая информация сохраняется в таблице базы данных. Таблицу базы данных, в свою очередь, легко обновить из области администратора. При обновлении аппликации вы можете легко расширять и обновлять.
Также гораздо проще централизовать «данные», которые необходимо резервировать в одном месте.
Могу ли я предложить использовать memcached или что-то подобное, чтобы ускорить его?
всего пару мыслей ...
Я просто использовать PHP массив для конфигурационных файлов.
<?php
return array
(
'user' => 'name',
'pass' => 'word',
'one_day' => 60 * 60 * 24
);
?>
Некоторые из преимуществ является то, что, как morendil упоминалось, не требуется синтаксический анализ, его так быстро, как он получает, вы можете хранить все виды комплексных переменных/уравнений, и вы можете сделать следующее:
<?php
$config = include 'path/to/file.php';
?>
Фактически синтаксический разбор * необходим *, и можно утверждать, что синтаксический анализ и выполнение PHP-кода - более сложная задача, чем извлечение строк для .ini-файла. Тем не менее, я согласен с тем, что использование PHP - это самый простой способ. – che
Я имею в виду не ручное разбор, а массив можно кэшировать в APC;) – Mario
Вместо массива, не лучше ли/быстрее использовать класс? –
- 1. Каков наилучший способ хранения настроек приложения? (MVC)
- 2. Каков наилучший способ создать страницу настроек
- 3. Каков наилучший способ хранения пользовательских настроек конфигурации?
- 4. Каков наилучший способ сохранения данных в Android?
- 5. Каков наилучший способ массового сохранения файлов cookie?
- 6. Каков наилучший способ сохранения глобального массива в php?
- 7. Каков наилучший способ представить свойство без сохранения, которое можно переопределить?
- 8. Каков официальный способ сохранения настроек для программ python?
- 9. Каков наилучший способ хранения настроек базы данных с помощью Django?
- 10. Каков наилучший способ хранения пользовательских настроек для приложения .NET?
- 11. Каков наилучший способ представления настроек в контроллере iOS-приложения
- 12. Каков наилучший способ хранения настроек для каждой рабочей таблицы?
- 13. Каков наилучший способ использования общих настроек между действиями
- 14. Каков наилучший способ обработки Multi-instance Properties.Settings.Default.Save()
- 15. Каков наилучший способ увеличения?
- 16. Каков наилучший способ запроса?
- 17. Каков наилучший способ многопоточности?
- 18. Каков наилучший способ реализации «мягкого» процесса сохранения или изменения?
- 19. ASP.NET Core. Каков наилучший способ сохранения модели во всем приложении?
- 20. Каков наилучший способ сохранения ответа webservice в БД?
- 21. Каков наилучший способ сохранения данных в приложении Java Desktop?
- 22. Каков наилучший способ добиться сохранения данных jquery/php?
- 23. Каков наилучший способ сохранения нескольких строк в DB одновременно?
- 24. Каков наилучший способ предложить класс как услугу для сохранения данных?
- 25. Каков наилучший способ сохранения объекта с помощью форм в PHP?
- 26. rails3 ajax: Каков наилучший способ сохранения локальных переменных через ajax?
- 27. Каков наилучший способ развертывания сервлета изображения для сохранения конфиденциальности изображений?
- 28. Каков наилучший способ сохранения/отображения изображений? (не blob vs. txt)
- 29. Каков наилучший шаблон для сохранения объектов?
- 30. Каков наилучший способ сохранить состояние игры?
Я на самом деле просто столкнулся с этим же, спасибо Skippy! – helloandre
Рад, что это может помочь кому-то еще! –