Должен ли я использовать сеансы базы данных или файловые сеансы Native PHP? - PullRequest
9 голосов
/ 12 января 2010

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

Теперь на моем сайте я буду создавать защищенную внутреннюю панель, чтобы зашифрованный файл cookie не казался разумным вариантом, но я не хочу подключаться к моей базе данных без необходимости, поскольку он не очень быстрый (общий доступ). хостинг).

Мне интересно, что за причины, по которым они не поддерживают собственные сеансы, и *1001* сеансы базы данных или файловые сеансы на стороне сервера обычно считаются лучшим вариантом.

Спасибо.

1 Ответ

12 голосов
/ 12 января 2010

Обычно для хранения данных сеанса люди обычно используют одно из трех решений:

  • файлы (по умолчанию)
  • база
  • Memcached

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

В такой ситуации необходимо наличие центрального / общего места для хранения сеансов - и базы данных соответствуют этому описанию; и также просты в настройке - и приложения PHP обычно работают с базой данных.

И поскольку базы данных не так хорошо масштабируются, особенно для записи, вы иногда используете вместо этого что-то вроде memcached: механизм, который хранит данные в ОЗУ (быстрее) , охватывающий столько серверов, сколько вы хочу / нужен (хорошо масштабируется) .


Какое решение вы должны использовать?

Ну, в каких из этих ситуаций вы находитесь?

  • Файлы в порядке, по крайней мере, если один пользователь всегда находится на одном сервере
  • Если вам нужна база данных для вашего приложения, вы можете хранить сеансы в базе данных: не нужно никаких дополнительных настроек (Например, Drupal делает это по умолчанию) .
  • memcached требует дополнительной настройки, но, вероятно, это лучшее решение, если у вас очень большой трафик ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...