Лучший способ хранить глобальные переменные - PullRequest
5 голосов
/ 13 января 2009

Я пишу приложение на PHP, которое использует много глобальных переменных, которые используются в скрипте. Прямо сейчас у меня есть файл конфигурации, в котором хранится набор глобальных переменных, созданных с помощью функции define(), но, поскольку у меня их будет так много, было бы лучше создать таблицу в базе данных, которая просто содержит имена и значения переменных, а для доступа к ним есть функция, которая запрашивает базу данных, находит переменную, возвращает значение и кэширует значение для будущего использования.

Я также приветствую другие идеи для хранения глобальных переменных.

Ответы [ 2 ]

9 голосов
/ 13 января 2009

Функция define() создает константы, а не глобальные переменные. Глобальные переменные следует использовать с осторожностью, поскольку они могут быть повреждены случайно (или злонамеренно!), Однако константы совершенно безопасны.

Я считаю, что проще всего иметь файл с именем 'config.php', который устанавливает все константы, он быстрее и проще.

0 голосов
/ 14 января 2009

Ну, это зависит от структуры вашего приложения. Если при заданной загрузке страницы вам действительно понадобится одна или две из нескольких сотен переменных, тогда тестирование производительности может показать, что запрос к базе данных может быть быстрее, чем включение массивного файла конфигурации. Тем не менее, вам нужно быть осторожным, чтобы не перегружать базу данных слишком большим количеством запросов каждый раз, когда пользователь хочет что-то сделать. Кэширование может сократить накладные расходы, добавленные избыточными запросами, но это степень его использования.

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

Лично я оказался в обеих ситуациях и соответственно использовал оба метода. Если вы действительно нерешительны, вы всегда можете просто сделать несколько тестов. Время загрузки страницы, которая извлекает информацию о конфигурации из базы данных, затем время загрузки страницы, используя файл .ini (или файл .php, полный define() s).

(И, если говорить педантично, define() создает константы в глобальной области, а не глобальные переменные.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...