Pracuję nad aplikacją webową, która powinna być w stanie wykonywać zadania tylko za pomocą AJAX. Wydaje się działać całkiem nieźle, ale mam problem, ponieważ nie przechowuję zmiennych Session
na stronie publicznej.Używanie bazy danych sesji na wielu serwerach Apache
Moja procedura logowania jest podobna do usługi iCloud. Przyjedziesz na jedną stronę z prośbą o login. Twój login jest wysyłany na serwer przy użyciu AJAX i zwraca true
lub false
. Jeśli jest to prawda, okno logowania znika i jesteś gotowy do pracy z aplikacjami.
gdy jesteś patrząc na obrazek powyżej, ujrzysz dwie zielone pola, jak dokładnie w tym samym miejscu, bez odświeżania URL lub cokolwiek. To po prostu ta sama strona.
Pudła różowe reprezentują serwery Apache, które nie zarejestrowały żadnego numeru Sessions
. Moja klasa sesji została zbudowana przy użyciu pomysłu session_set_save_handler
.
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc')
);
ja nie potrafię wymyślić sposób dla strony publicznej z prośbą o dane na serwerach pink
bez identyfikatora sesji. Czy ktokolwiek mógłby mi powiedzieć, jaki pomysł kryje się za ideą session_set_save_handler
, tak jakbym miał 6 lat? Przeczytałem podręcznik PHP po szczegóły, ale to naprawdę mnie zakłopotało.
Jeśli ktoś wie, jak ta metoda komunikacji może działać poprawnie, proszę powiedz mi. Wszystkie serwery Apache są połączone za pośrednictwem sieci LAN i mogą się komunikować. Wszystkie mają także dostęp do tego samego Session Class
w bibliotece dołączeń Apache.
Proponuję serializacji/deserializacji '$ _SESSION' i przechowywać go w' tabeli Sessions'. – BlitZ
Ale w jaki sposób serwer Apache będzie wiedział, którą sesję obsłuży podczas żądania? – Dimser
Kiedy nie pomyliłem się: zapisujesz nową sesję w tabeli - w centralnym miejscu - z której każdy serwer apache może ją odczytać? – bwoebi