Хотите узнать, как хранятся сессии для сайтов с высоким трафиком?

Я пытался понять, где PHP (или другие языки, на самом деле, я полагаю, принцип тот же) хранит данные сеанса на стороне сервера.

Я читаю этот вопрос а также этот вопрос, оба, похоже, указывают на то, что по умолчанию он просто создает обычные файлы в папке / tmp, файлы, имена которых соответствуют идентификаторам сеансов, хранящимся в cookie-файлах на стороне клиента.

Но мне это показалось немного странным … как насчет сайтов с высоким трафиком с миллионами одновременно работающих пользователей … действительно ли у них просто гигантская папка, полная файлов сессий? Там нет базы данных участвует?

1

Решение

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

Очень часто хранилище данных в памяти, как Redis будет использоваться. Многие из этих типов баз данных обеспечивают базовое разделение на нескольких хостах и ​​простые формы репликации, чтобы обеспечить масштабирование хранилища ваших сеансов.

Когда вы достигнете масштаба миллионов одновременно работающих пользователей, ваши конкретные потребности станут намного сильнее. Сколько данных вам нужно хранить в сеансе? Можно ли эти данные реплицировать другим на основе максимальных усилий или они должны быть атомарными? В этот момент все делают это по-своему, но принцип тот же. Быстрые данные доступны везде, где это необходимо. Храните как можно меньше.

3

Другие решения

Сеанс по умолчанию находится в файловой системе, но вы можете настроить свое приложение для хранения сеанса в кеше памяти, например Memcached или Redis. Таким образом, у вас может быть много веб-серверов и много серверов кеша для ваших сессий.

1

По вопросам рекламы [email protected]