Настройте _Session для работы с приложениями, которые развернуты на нескольких серверах, в другом поддомене. - PullRequest
0 голосов
/ 24 февраля 2009

У меня есть сайт, который состоит из 2 приложений:

  1. Приложение переднего плана
  2. Бэкэнд-приложение

Внешний интерфейс имеет домен www, а внутренний - поддомен задания. Например, мое приложение переднего плана имеет домен www.example.com/*, а мой сервер - job.example.com/*. Мое приложение переднего плана может найти на одном сервере, тогда как внутреннее приложение может найти на другом сервере . Или они оба хранятся на одном сервере.

Вопрос теперь в том, могут ли переменные сеанса, которые я хранил в суперглобальном _Session (PHP), работать в разных поддоменах. Если я установлю _Sesssion["SessionID"] в www.example.com/*, могу ли я получить тот же _Sesssion ["SessionID"] из job.example.com/*? Нужно ли выполнять специальную настройку для работы?

Ответы [ 5 ]

2 голосов
/ 24 февраля 2009

Для использования одних и тех же сеансов на нескольких доменах / серверах необходимо учитывать два аспекта:

  • где данные сеанса хранятся так, чтобы оба домена / сервера могли получить к ним доступ, а
  • как идентификатор сеанса переносится по обоим доменам / серверам, так что

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

Совместное использование идентификатора сеанса
Если вы хотите совместно использовать идентификатор сеанса для нескольких доменов (может быть на одном сервере или на другом) и хотите использовать файлы cookie для передачи идентификатора сеанса, вам необходимо изменить настройки файла cookie идентификатора сеанса , чтобы Cookie действителен для обоих доменов. Но это возможно только в том случае, если оба домена совместно используют один домен более высокого уровня. Для www.example.com и jobs.example.com, которые совместно используют example.com, параметр $domain для session_set_cookie_params() должен быть установлен на .example.com.

0 голосов
/ 24 февраля 2009

Субдомены влияют только на ваш файл cookie, который должен быть правильно настроен (как для всего домена), чтобы сохранить идентификатор сеанса путем перехода от www. * К заданиям. *.

Для сохранения сеанса вы можете использовать сервер memcache и использовать обработчик php_memcache . Вам не нужно писать собственный обработчик сеанса.

0 голосов
/ 24 февраля 2009

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

0 голосов
/ 24 февраля 2009

Напишите свой собственный обработчик сеанса: http://de.php.net/manual/en/function.session-set-save-handler.php

Использовать центральную базу данных или сервер memcache.

0 голосов
/ 24 февраля 2009

Данные сеанса сохраняются в пути, заданном функцией session_save_path, поэтому вам необходимо сделать этот каталог доступным для обоих приложений. Если они находятся на одном сервере, вам, вероятно, не нужно ничего делать, но если они находятся на разных серверах, вам придется использовать какую-то сетевую файловую систему, такую ​​как NFS, и смонтировать ее так, чтобы сохранить путь сеанса находится в сетевой файловой системе для обоих серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...