Распределение сеансов Apache (FCGI?) - PullRequest
0 голосов
/ 01 февраля 2011

Надеюсь, это простой вопрос, так как я довольно плохо знаком с внутренней работой Apache.Для тех, кто не знаком с FCGI, он создает процесс cgi, который продолжает выполняться между запросами, эффективно создавая экземпляр, который длится столько времени, сколько нужно пользователю.Это делается путем запуска исполняемого файла cgi и направления будущих запросов в эту работающую программу (насколько я понимаю).

Мой вопрос такой: есть ли способ заставить apache создать новый экземпляр этой программы длякаждого нового пользователя (как это определено с помощью файлов cookie, IP-адреса и т. д.), а затем перенаправлять последующие запросы от этого пользователя в тот же процесс, который они инициализировали?IE

user1 requests test.fcgi <br> user1 creates PID 100 <br> user2 requests test.fcgi <br> user2 creates PID 101 <br> user1 requests test.fcgi <br> user1 directed to running PID 100 <br> user2 requests test.fcgi <br> user2 directed to running PID 101

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

Подробнее: я запускаю apache 2.2.12 на компьютере EC2 с установленным libapache2-mod-fcgidиз репозиториев Ubuntu.

Спасибо

1 Ответ

1 голос
/ 01 февраля 2011

Нет, вы не получаете сессионную привязку к FastCGI, и поскольку (в конфигурации, которая почти всегда используется), все дочерние процессы прослушивают один и тот же сокет и полагаются на ядро ​​для распределения подключений к ним, естьнет тривиального способа добавить это в веб-сервер.Вам нужно будет обработать каждый дочерний процесс как свой собственный бэкэнд со своим собственным сокетом, прежде чем вы сможете выполнить привязку сеанса к дочерним процессам.

Лучшая идея: не сохранять состояние, необходимое для пользователей в отдельных процессах;сохранить это вне процесса.Это в значительной степени то, что сессии для .

...