Ваше первое предположение неверно.Сессии PHP не где вы храните данные.Базы данных, файлы, хранилища документов и т. Д. - это место, где вы храните свои данные.
Сеанс "данные" - это просто переменные, включенные в массив $ _SESSION в сериализованной форме.Вы можете запустить serialize () и unserialize () для переменных, чтобы получить некоторое представление о том, как они выглядят.
В вашем скрипте, когда вы начали сеанс с использованием session_start (), когда вы добавляете переменные или удаляете переменныев $ _SESSION php сериализует это и сохраняет его для вас.
Как только сеанс существует, и пользователь делает другой запрос, который идентифицирован как тот же самый пользователь (с тем же идентификатором сеанса), который обычно передается клиенту через cookie, после выдачи session_start (),PHP читает сериализованные данные в файле сеанса, десериализует их и сохраняет обратно в $ _SESSION.
По умолчанию PHP будет хранить отдельные данные сеанса в виде файлов в файловой системе.Для приложений небольшого или среднего размера это очень эффективно.
Итак, чтобы было ясно, что люди хранят в сеансах PHP - это в основном переменные, считываемые из любого другого постоянного хранилища, которое вы можете иметь, чтобы вы могли избежатьтакие вещи, как повторный запрос к базе данных, чтобы получить имя и user_id для пользователя, который уже вошел в ваше приложение.
Это не основная версия этих данных и не место, через которое вы будете обновлять эти данные в случае их изменения.Это будет оригинальная база данных или коллекция mongodb.
Статья, которую вы опубликовали, имеет ряд заявленных и неустановленных предположений, включая:
- Devops / Sysadmins просто решают перенастроить PHP-приложения для изменения обработчиков сеанса (вводит в заблуждение / ложь)
- В развертывании используется балансировщик нагрузки (возможно)
- Балансировщик нагрузки не поддерживает или использует липкие сеансы
Затем он переходит к некоторым деталям относительно нескольких альтернативкоторые позволяют общим обработчикам сеансов решать условия гонки, которые он описывает
Как вы сказали, вы еще не ясно, какие сеансы на самом деле, или как они работают или что они делают для вас.Важная вещь, которую нужно знать о сценариях PHP, заключается в том, что они привязаны к одному запросу, а сеансы - это способ не повторять дорогостоящее чтение базы данных.Это по сути переменный кеш, который PHP использует (или нет), когда он подходит вашему дизайну.
В тот момент, когда у вас есть кластер, как указано в статье, люди часто хранят данные в общих ресурсах, которые могут быть реляционной базой данных или любым из множества других бэкэндов, каждый из которых имеет разные свойства, соответствующие их целям.
Опять же, чтобы изменить обработчики сеансов, обычно вносятся изменения кода для реализации требуемых функций обработчика сеансов, и существуют способы кодирования вещей, которые смягчают проблемы, поднятые в статье, которую вы опубликовали,почти для каждого продукта персистентности, который используют люди.
Наконец, но не в последнюю очередь, описанные проблемы существуют в той или иной степени практически с любым кластерным процессом на стороне сервера и не являются уникальными для PHP или его механизма сеанса.