PHP-сессии на автоматическом масштабировании - PullRequest
3 голосов
/ 23 февраля 2011

Я работаю над веб-приложением PHP, развернутым в Amazon Web Services. У нас есть балансировщики нагрузки перед автоматически масштабируемыми серверами приложений.

Проблема, с которой мы сейчас сталкиваемся, - это обработка сессий. В то время как липкие сессии были бы разумным решением, мы хотели бы сохранять сессии в течение достаточно долгого времени (в идеале, недели). Это может ухудшить производительность балансировщика нагрузки с течением времени. Кроме того, использование автоматического масштабирования будет означать, что время от времени мы удаляем сервер и, таким образом, теряем все активные сеансы на нем. Конечно, мы могли бы просто использовать общую базу данных для хранения сессий, но я немного обеспокоен производительностью, если каждый запрос требует повторного обращения к БД.

Я был бы признателен, если бы вы могли предложить какие-либо решения, которые сработали бы для вас, или любые идеи, которые мы могли бы попробовать.

Заранее спасибо за помощь, Росс

1 Ответ

2 голосов
/ 23 февраля 2011

Я бы использовал пользовательское решение для сеансов, в котором сеансы хранятся в базе данных.

Таким образом, все веб-серверы будут иметь доступ к одному и тому же хранилищу сеансов, а также вы сами сможете решить, как долго сеанс долженбыть сохраненным.

Вы можете создать что-то, что работает с обычными сессиями PHP, или полностью автономный класс для их обработки.

Я сделал нечто подобное, чтобы разделить сессию между asp и asp.netпо-разному служит, и это работает.

Если производительность является проблемой, используйте отдельную базу данных, memcached или mysql кластер (также сохраненный в памяти) или, возможно, mongoDB для сессий.

...