r1ch
@r1ch
Странник

Разница между сессиями и эмуляцией сессий?

Пока в теории, поэтому не могу сделать benchmark
1)Сессии - хранятся в папке tmp в виде файлов внутри которых есть, и sql запросы и html, и служебные данные.
2)
CREATE TABLE `admin` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(40) NOT NULL,
  `pass` VARCHAR(40) NOT NULL,
  `hash` CHAR(40) ,
  PRIMARY KEY (id),
  UNIQUE  login_unq(login),
  UNIQUE  hash_unq(hash)
);

Эмуляции сессий с помощью cookie и таблицы, в таблице admin есть значение hash для идентификатора (аналог session_id), и есть возможность записывать в cookie этот hash, а при входе, обновление страницы генерировать новый hash и записывать его в cookie, при выходе удалять куки,а иначе она сама удалиться через заданное время.

1)Ожидаемые проблемы сессий: что если 1млн посетителей будет 1млн файлов средний размер которых от 25 до 56 кб, что дает расход памяти от 25,8Гб до 53,4 Гб
Плюсы сессий: удобно, есть функции для работы.

2)Ожидаемые проблемы эмуляции сессий: много запросов к БД,
Плюсы эмуляции сессий: память в БД равна, один hash CHAR(40) равен 40 байт, а это 38,1 мб на 1млн.
Проблема безопасности: если стянут БД , то могут использовать hash, подставив в свои cookie. Возможное решение: в БД записывать преобразованный в sha1(hash), в куки только сам hash, hash из куки преобразовать в sha1 для сравнения с значениями из БД.

Может где-то ошибаюсь...
  • Вопрос задан
  • 3691 просмотр
Решения вопроса 1
fornit1917
@fornit1917
Сессии в файлах это фу: проблемы с блокировками могут быть (вот тут я писал об этом toster.ru/q/54276#answer_198530) + не масштабируется этот вариант. Хотя для небольшого сайта и вариант на файлах вполне годится.
Я уже давно перешел на хранение сессии в sql- или nosql-базе данных.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы