#php #database #performance #session
#php #База данных #Производительность #сессия
Вопрос:
Во время моего исследования я нашел мнения, указывающие в обоих направлениях по этому вопросу. Было бы полезно обсудить этот вопрос.
Мы осознаем очевидные преимущества аспектов безопасности при хранении данных сеанса в базе данных.
Вариант 1:
Использование хранилища сеансов по умолчанию в файловой системе (по умолчанию /tmp)
Вариант 2:
Использование session_set_save_handler() для хранения данных сеанса в базе данных /a.
Мои вопросы:
- Какой пример на сайте с высоким трафиком даст наилучшую производительность?
- Связано ли это с системным оборудованием и где находятся текущие узкие места на этом конкретном сайте? В этом случае сайт сильно ориентирован на отображение конкретных пользовательских данных из базы данных. Возможно, это был бы вопрос, требующий ввода по ошибке сервера.
- Вероятно, сайту скоро придется распространяться на несколько серверов, чтобы справиться с нагрузкой и доступностью из других частей мира. Подумайте о CDN. Влияет ли это на мое решение? Я думаю, было бы намного проще управлять информацией о сеансе между разными компьютерами, если бы она хранилась в базе данных.
Ответ №1:
Причина, по которой хранение в / tmp не рекомендуется на сайтах с высоким трафиком, заключается в том, что они используют балансировку нагрузки. Балансировка нагрузки эффективно меняет местами, какой компьютер доставляет данные. Если сеанс находится в каталоге /tmp, не все компьютеры имеют один и тот же каталог / tmp, что означает, что ваши пользователи могут начать появляться вошедшими в систему или вышедшими из системы без видимой причины.
Вот почему некоторые сайты хранят данные в базах данных. Однако это неэффективно, поскольку каждый запрос к сайту означает извлечение информации из базы данных, что означает постоянное подключение, преобразование данных из текста в массив и так далее.
Итак, есть третий вариант — сохранить данные сеанса с помощью Memcache. Это действительно просто, и если вы немного погуглите об этом, вы найдете ответы и сможете настроить все это менее чем за 5 минут.
Комментарии:
1. Балансировщик нагрузки мог выбрать компьютер из-за идентификатора сеанса.
2. Это не просто балансировка нагрузки, я использовал это в качестве примера. Есть и другие вещи, связанные с сохранением сеанса в / tmp, например, любой, у кого есть доступ к компьютеру, может изменять файлы сеанса и так далее. Это был вопрос о производительности, и хранение данных непосредственно в оперативной памяти — самый быстрый способ справиться с хранением / извлечением сеанса.