Мы используем Amazon Web Services (AWS), и у нас есть несколько веб-серверов и балансировщик нагрузки. Проблема с веб-серверами заключается в том, что $ _SESSION уникальна для каждого из них. Я сохраняю некоторую информацию о пользователе в $ _SESSION.
Каков правильный способ синхронизации этой информации? Есть ли способ объединить место, где хранятся эти сессии, или использовать MySQL для хранения этих данных (мне не нравится последний вариант)?
Я думаю, что вы ищете «Sticky Sessions». Если я прав по этому поводу, Amazon дает вам два разных варианта.
Балансировщик нагрузки (на основе продолжительности, я рекомендую этот). http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsLBCookies
И приложение на основе липкости сессии http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsAppCookies
Хотя концептуально похож на вариант MySQL, который вы пытаетесь избежать по какой-то причине, довольно привлекательным вариантом для использования в Amazon Web Services (AWS) является недавно внедренная масштабируемая обработка сеансов в PHP с использованием Amazon DynamoDB , в которой рассматривается типичная обработка сеанса в PHP не является масштабируемым , поэтому в любом случае требуется какое-то пользовательское решение:
Сеансы используются для сохранения краткосрочных данных по нескольким HTTP-запросам […]. Собственный обработчик сеанса PHP хранит данные сеанса в локальной файловой системе; однако этот подход становится ненадежным в распределенных веб-приложениях . При последующих запросах пользователь не может быть перенаправлен на тот же сервер, что позволяет эффективно забыть данные. Пользователь будет отключен и запутан.
Чтобы преодолеть эту проблему, разработчики PHP внедрили собственные решения для хранения данных своих пользователей с использованием баз данных, общих файловых систем, серверов Memcache, защищенных от вирусов файлов cookie и других механизмов хранения . […] [акцент мой]
В зависимости от вашего варианта использования вы можете захотеть дать этому потенциально очень быстрому сеансовому хранилищу попробовать.
Чтобы добавить к вышеуказанному ответу, что вы ищете распределенный кеш, такой как DynamoDB, который является платной услугой amazon. Его удивительно быстрый и яркий в использовании, но если вы ищете некоторые другие альтернативы с открытым исходным кодом, вы можете посмотреть следующие варианты чтения / записи памяти.