Просто не знаю, куда с вопросом обратиться. Вопрос такой: а что такое сессия с точки зрения Apache? Сначала попробую свои "соображения" описать. Локальная сеть, в сети находятся: сервер БД (возможно не один), сервер приложений (возможно не один), сервер "пользователей" и Веб-Сервер. Пользователь заходит на веб-сервер, авторизуется через него на сервере пользователей и далее начинает работу с сервером приложений (или с серверами). Они, в свою очередь, имеют доступ к БД. Соединения между Веб-сервером и серверами пользователей и приложений идёт через FastCGI (чистый exe на C, никаких PHP и Perl). Соответственно, авторизация пользователя должна проводиться один раз на каждое открытие браузера. Как вариант: при успешной авторизации пользователю выставляется кука (например, GUID) с временем жизни до закрытия браузера. Соответственно, эта кука также прописывается в БД и сервер приложений всегда по ней знает, что это Вася Пупкин, а не Люба Пирожкова. Собственно, ощущаю некоторое беспокойство: вот, например, пользователь на обед ушёл, а браузер не закрыл. Апач-сессия (судя по документации) будет убита через 24 минуты. И тут юзверь приходит с обеда и продолжает работу. Кука у него та же самая. По-идее, он уже авторизовался, значит должен продолжать работать. А апач сессия (и, возможно, те FastCGI-процессы, которые были с ней ассоциированы, уже прибиты). Ну это можно обойти, например, увеличив тайм-аут сессии с 24 минут до, например, двух часов. Но тут уже другое дело начинается: допустим, я открыл браузер, авторизовался, подумал - и закрыл его к лешему. Потом через 3 минуты подумал - и снова открыл. И так несколько раз. Насколько я понимаю, сервер никак не может узнать о том, что я закрыл браузер. Может это узнать только косвенно - по отсутствию предыдущей куки. Но тогда получается, что все предыдущие мои сессии будут болтаться в памяти сервера до истечения тайм-аута. Так вот, ещё раз вопрос: а что такое сессия с точки зрения Apache? Это какой-то дополнительный поток? Просто некий "массив" в памяти? Можно ли этими сессиями как-то управлять на серверной стороне? Буду рад любым советам, ссылкам на мануалы, хелп и т.п. Сколько не гуглил, выдают ссылки на php и perl сессии... З.Ы. Прошу не обсуждать архитектуру комплекса, мол "зачем всё так сложно". Поверьте, она родилась не просто так. З.З.Ы. Прошу прощения за некий сумбур в изложении.
Apache ( по крайней мере у меня ) не знает слова "Сессии", этим занимается PHP и точка. Вы описали, примерно, работу PHP по установке и работе с сессиями: PHP устанавливает куку, PHP проверяет ее, PHP создает файлы, PHP читает данные с этих файлов. В этом нет ничего сверхестественного: обыкновенная логика, Вы можете создать свой механизм сессий. Если речь идет не о PHP приложении, то двигаетесь Вы в нужном направлении.
Во, тут и прочитал: Правда, сессия может пропасть и без закрытия браузера. В силу ограничений, рассмотренных в самом главном разделе этого FAQ, механизм сессий не может определить тот момент, когда пользователь закрыл браузер. Для этого используется таймаут – заранее определенное время, по истечении которого мы считаем, что пользователь ушел с сайта. По умолчанию этот параметр равен 24 минутам.
Короче, немного перефразирую вопрос: Что происходит в Апаче, когда в php-скрипте я пишу session_start;? (Очень не хочется в исходники лезть... )
Вы же сами описали механизм. Все что Вам нужно от сервера, так это установить куку и прочитать куку. Чего же боле?
Поищи в документации Апача слово "сессии". Если найдёшь - сюда ссылку кинь. А пока ты читал только доки про сесии в PHP. И ссылаешься именно на PHP-шные сессии.