2015-02-04 1 views
1

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

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

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

ответ

3

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

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

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

+1

Отличное объяснение того, как это достигается. – Darren

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^