ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] Are long connections possible?



On Mon, 27 Sep 1999 jadream@chat.ru wrote:

> From: jadream@chat.ru
> Subject: Re: [apache-talk] Are long connections possible?
> X-Mailer: Mozilla 4.04 [en] (WinNT; I)
> 
> 
> 
> Alex Tutubalin wrote:
> 
> > BTW, а нужно ли хранить эту информацию на сервере ? Мне казалось,
> > что раз клиенту надо, то на нем и надо хранить :)
> >
> > Alex
> 
> Увы!  Каждый сеанс имеет свои данные и соответственно свою реакцию на 
>совершенно
> одинаковые запросы. Можно, конечно, всю информацию хранить в БД, но уж очень
> медленно будет работать.

Можно сделать так: написать брокер транзакций в виде отдельного процесса,
который будет запускать процесс, собственно обрабатывающий транзакции
и  выдавать пользователю ID транзакции (в куке или в виде hidden поля в
форме) . Все копии апача будут коннектиться к этому брокеру через сокет
или fifo и отдавать ему id сессии или просьбу создать новую сессию.
Брокер пишется на perl или на tcl строчек в двадцать, если не особенно
заморачиваться интеллектуальной сборкой мусора.

Теперь то же самое, только без кошки 
Получив запрос от пользователя на создание новой сессии, apache запускает
долгоживущий процесс,
который создает unix-domain-socked с уникальным именем или открывает
tcp-сокет с уникальным номером и слушает его. Имя/номер передается клиенту
в качестве  id процесса.

Если в любую копию apache приходит запрос, содержащий id сессии, то
очевидно, она уже знает, с кем коннектиться.


Еще вариант - поставить Apache::ASP, который использует dbm-файлы (если не
ошибаюсь) для хранения контекста сессии. Еще вариант - использовать общую
память в scoreboard (на www.modperl.com что-то было на эту тему) для
хранения контекста сессии.   

Хотя, конечно, самый прямолинейный вариант - гонять _весь_ контекст сессии
туда-сюда через cookie или hidden-поля.
--------------------------------------------------
Victor Wagner                   vitus@ice.ru
Programmer                      Office:7-(095)-203-51-19
Institute for Commerce          Home: 7-(095)-135-46-61
Engineering                     http://www.ice.ru/~vitus

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.