Я пытался понять, где PHP (или другие языки, на самом деле, я полагаю, принцип тот же) хранит данные сеанса на стороне сервера.
Я читаю этот вопрос а также этот вопрос, оба, похоже, указывают на то, что по умолчанию он просто создает обычные файлы в папке / tmp, файлы, имена которых соответствуют идентификаторам сеансов, хранящимся в cookie-файлах на стороне клиента.
Но мне это показалось немного странным … как насчет сайтов с высоким трафиком с миллионами одновременно работающих пользователей … действительно ли у них просто гигантская папка, полная файлов сессий? Там нет базы данных участвует?
Даже на небольших сайтах я не знаю, что многие люди помещают файлы в каталог для хранения сессий. Это медленно, и данные сеанса могут быть тем, к чему вам нужен быстрый и частый доступ, в зависимости от сайта.
Очень часто хранилище данных в памяти, как Redis будет использоваться. Многие из этих типов баз данных обеспечивают базовое разделение на нескольких хостах и простые формы репликации, чтобы обеспечить масштабирование хранилища ваших сеансов.
Когда вы достигнете масштаба миллионов одновременно работающих пользователей, ваши конкретные потребности станут намного сильнее. Сколько данных вам нужно хранить в сеансе? Можно ли эти данные реплицировать другим на основе максимальных усилий или они должны быть атомарными? В этот момент все делают это по-своему, но принцип тот же. Быстрые данные доступны везде, где это необходимо. Храните как можно меньше.
Сеанс по умолчанию находится в файловой системе, но вы можете настроить свое приложение для хранения сеанса в кеше памяти, например Memcached или Redis. Таким образом, у вас может быть много веб-серверов и много серверов кеша для ваших сессий.