Лучшая практика для того, чтобы хранить глобальные данные в PHP?

Я запускаю веб-приложение, которое позволяет пользователю входить в систему. Пользователь может добавить/удалить содержание к его 'библиотеке', которая отображена на странице, названной "library.php". Вместо того, чтобы запросить базу данных для содержания пользовательской библиотеки каждый раз они загружают "library.php", я хочу сохранить его глобально для PHP, когда пользователь входит в систему, так, чтобы запрос был только выполнен однажды. Существует ли лучшая практика для того, чтобы сделать это? fx. хранение их библиотеки в массиве на сессии?

Спасибо за внимание

5
задан soren.qvist 8 March 2010 в 14:33
поделиться

7 ответов

Если вы сохраните библиотеку каждого пользователя в $ _ SESSION в виде массива, как вы предложили (что определенно возможно), у вас будет чтобы убедиться, что любые обновления, вносимые пользователем в библиотеку, мгновенно отражаются в этой переменной сеанса.

Честно говоря, если нет серьезных запросов для извлечения библиотеки или у вас тонны трафика, я бы просто придерживался «выполнять запрос всякий раз, когда пользователь обращается к library.php».

7
ответ дан 13 December 2019 в 05:34
поделиться

При входе пользователя в систему вы можете сгенерировать XML-файл (например, USER_ID.xml), который вы отобразите с помощью xslt.

http://php.net/manual/en/book.xslt.php

1
ответ дан 13 December 2019 в 05:34
поделиться

Каждый PHP-скрипт умирает, когда завершает свою работу, поэтому данные не могут постоянно храниться в веб-приложении, как это можно сделать в приложении для ПК.

Одним из способов могут быть сессии, но это зависит от количества данных, которые вы хотите сохранить. Согласно вашему примеру, вы говорите о библиотеке, поэтому мне кажется, что нужно сохранить большое количество данных, в таком случае БД - это то, что нужно, и да, вам придется запрашивать ее каждый раз.

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

1
ответ дан 13 December 2019 в 05:34
поделиться

Поскольку речь идет об оптимизации производительности БД, я бы предложил вам взглянуть на memcached, который идеально подходит к вашей проблеме:

memcached - это [...] предназначенный для использования в ускорении ускорения динамических веб-приложений путем облегчения нагрузки на базу данных.

1
ответ дан 13 December 2019 в 05:34
поделиться

Думаю, лучше всего сохранить его в сеансе.
Когда пользователь входит в систему, создается сеанс, и вы можете сохранять в нем данные, используя суперглобал:

$_SESSION['key'] = "value";

Вы также можете хранить здесь массивы или все остальное, и его можно очистить, если пользователь выходит из системы.

0
ответ дан 13 December 2019 в 05:34
поделиться

вы заботитесь о производительности; Обратите внимание:

  • сессия может использовать базу данных или файл для хранения данных.
  • база данных здесь используется вместо файлов, из-за ее производительности и возможностей.

используйте базу данных, она предназначена для использования именно в таких ситуациях!

0
ответ дан 13 December 2019 в 05:34
поделиться

Примите во внимание размер данных. Умножьте это на максимальное количество одновременных пользователей.

Затем сравните это с памятью, доступной на вашем сервере. Также подумайте, является ли это разделяемым сервером; другим сайтам тоже нужны ресурсы.

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

2
ответ дан 13 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

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