PHP: сеансы по умолчанию / tmp ПРОТИВ производительности session_set_save_handler()

#php #database #performance #session

#php #База данных #Производительность #сессия

Вопрос:

Во время моего исследования я нашел мнения, указывающие в обоих направлениях по этому вопросу. Было бы полезно обсудить этот вопрос.

Мы осознаем очевидные преимущества аспектов безопасности при хранении данных сеанса в базе данных.

Вариант 1:

Использование хранилища сеансов по умолчанию в файловой системе (по умолчанию /tmp)

Вариант 2:

Использование session_set_save_handler() для хранения данных сеанса в базе данных /a.


Мои вопросы:

  1. Какой пример на сайте с высоким трафиком даст наилучшую производительность?
  2. Связано ли это с системным оборудованием и где находятся текущие узкие места на этом конкретном сайте? В этом случае сайт сильно ориентирован на отображение конкретных пользовательских данных из базы данных. Возможно, это был бы вопрос, требующий ввода по ошибке сервера.
  3. Вероятно, сайту скоро придется распространяться на несколько серверов, чтобы справиться с нагрузкой и доступностью из других частей мира. Подумайте о CDN. Влияет ли это на мое решение? Я думаю, было бы намного проще управлять информацией о сеансе между разными компьютерами, если бы она хранилась в базе данных.

Ответ №1:

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

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

Итак, есть третий вариант — сохранить данные сеанса с помощью Memcache. Это действительно просто, и если вы немного погуглите об этом, вы найдете ответы и сможете настроить все это менее чем за 5 минут.

Комментарии:

1. Балансировщик нагрузки мог выбрать компьютер из-за идентификатора сеанса.

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