как передать PHP SESSION между серверами

программирование Linux php сервер apache

Сайт работает на двух серверах расположенных в разных дата-центрах разных стран.
В DNS домена прописана A запись - 2 IP адреса, На примере домена ya.ru выглядит это вот так:

C:\Users\Администратор>nslookup ya.ru
google-public-dns-a.google.com
Address: 8.8.8.8

Не заслуживающий доверия ответ:
ya.ru
Addresses: 93.158.134.3
213.180.193.3
213.180.204.3


На моем сайте авторизация пользователей написана через SESSION
Ситуация такая: Пользователь авторизовался на сайте на 1 сервере и продолжает свой серфинг по страницам сайта. И если пользователю отдаст страницу с сервера 2, то авторизация слетает.

Подскажите пожалуйста, возможно ли передать PHP SESSION между серверами.
Или подскажите что делать???

(Веб сервера - apache, OS - linux)

P.S. надеюсь мне удалось понятно объяснить.
Ответы:
Скорее всего, сессия слетает по той причине, что данные сессии хранятся на том сервере, который ее инициализировал, второй же сервер данных сессии не имеет (только куку с идентификатором сессии, но по этому идентификатору локальных данных нет).
Тут возможы варианты:
1. Сконфигурировать PHP так, чтобы на обоих серверах путь к директории данных сессий был абсолютно одинаковым и не был в пределах системных директорий. Причем при обращении к указанному пути должна открываться общая директория, находящаяся на каком-либо одном сервере. Тогда все данные будут хранится в одном месте
2. Можно на основе DRBD или подобной технологии организовать зеркалирование какого-либо диска (раздела) на оба сервера. Данные сессий хранить на этом диске.
3. Переопределить обработчики создания/чтения/удаления сессии так, чтобы данные сессии хранились в БД или в memcache. Естественно, сервер memcache или СУБД должен быть общим для обоих веб-серверов, либо должен использоваться кластер.
Из этих вариантов выбираем наиболее подходщий по своей ситуации. Например, если необходима синхронизация локальных файлов (например, загружаемых пользователями на сервер), при этом передача их от одного сервера к другому на каждый запрос не допускается — имеет смысл использовать DRBD.
Если в большей степени необходимо организовать быструю запись и получение временных данных или очень простых записей — сервер memcache (возможно, несколько с репликацией между собой) будет более подходящим решением.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.