Постоянные соединения. Суть и проблемы.

dun

Guest
Постоянные соединения. Суть и проблемы.

Доброе время суток всем.
Вопрос такого плана: в чем заключается суть постоянных соединений?
Например я коннектюсь функцией OCIPLogon($LOGIN, $PASS). В момент запуска скрипта создается сессия между Apache и Oracle. Скрипт запускает какие-то хранимые функции. Эти функции в свою очередь инициализируют переменные пакетов. Пока выполняется скрипт, мы можем обратиться к этим переменным пакетов. В этот момент момент заходит другой пользователь на сайт, соответсвенно, тоже запускается скрипт с OCIPLogon($LOGIN, $PASS). И вот в этот этот момент создаётся нова сессия между Apache и Oracle или используется старое соединение и соответсвенно старая сессия? Ведь если используется старая сессия то и значения переменных пакетов тоже старые, а мне надо для каждого пользователя свою сессию и, соответсвенно, свои значения переменных. Насколько я понимаю - когда мы создаем постоянное соединение, PHP запоминает дескриптор соединения, а сессия между APACHE и ORACLE НЕ РВЕТСЯ! Прав ли я, уважаемые?
 

Falc

Новичок
dun
При выполнении OCIPLogon создается сесия между ПХП(апачем) и ораклом, которая после отработки ПХП-скрипта не закрывается и если выполняется новый OCIPLogon с теми же параметрами, то используется уже открытая сесия. Но надо помнить что это верно только внутри одного процесса ПХП (в случае mod_php для одного чилда апача), т.е. если запрос обрабатывается другип процессом (чилдом апача), то сессия будет заведена новая.
Т.к. что тебе надо либо отказатся от постоянных соединений, либо в начале каждого скрипта инициализировать переменные пакетов.
 

dun

Guest
Спасибо за ответ, Falc.
На тему
либо в начале каждого скрипта инициализировать переменные пакетов.
вот такая ситуация:
заходит пользователь с номером UserId,
Запускается скрипт с OCIPLogon, он инициализирует переменную пакета UserId; тут же заходит второй пользователь, запускает тот же скрипт,
PHP использует старую сессию и в ней меняет переменную пакета UserID, но какая нибудь хранимая процедура от первого скрипта может ещё работать и использовать переменную пакета UserID, которая была уже поменяна вторым запуском скрипта!
Накладка. получается.
Резюмирую:
если я хочу использовать для каждого зашедшего на сайт пользователя свою сессию ORACLE с APACHE и соответсвенно для каждого пользователя свое значение переменной UserID то мне необходимо отказаться от OCIPLogon.
 

Falc

Новичок
dun
>>PHP использует старую сессию и в ней меняет переменную пакета UserID, но какая нибудь хранимая процедура от первого скрипта может ещё работать и использовать переменную пакета UserID, которая была уже поменяна вторым запуском скрипта!

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