URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5312
[ Назад ]

Исходное сообщение
"PHP+Oracle Почему возникает большое количество сессий"

Отправлено Eugene , 18-Окт-07 12:09 
Использую PHP5, ADODB для соединения с Oracle

Скрипт коннекта:
---------------------------
  $db = NewADOConnection('oracle');
  if (!$db) die('Connection failed');

  $result_connect = @$db->connect(FALSE, $_SESSION['user'], base64_decode($_SESSION['pass']), $_SESSION['serv']);
---------------------------


При этом на сервере оракла возникает большое количество соединений с БД от апача. Так как в проекте есть ещё и AJAX-вызовы, которые также оставляют после себя соединения, то ситуация с нагрузкой на оракловский сервер становится непростой :)
Вопрос(ы):
Почему такое происходит?
Почему эти сессии не закрываются после отработки скрипта?
Есть подозрение, что это зависит от настроек апача, т.к. на другом сервере большого количества соединений не возникало. Может ли это зависеть от веб-сервера?


Содержание

Сообщения в этом обсуждении
"PHP+Oracle Почему возникает большое количество сессий"
Отправлено angra , 18-Окт-07 13:00 
А вы пробовали самостоятельно закрывать соединение после завершения работы скрипта?


"PHP+Oracle Почему возникает большое количество сессий"
Отправлено tux2002 , 24-Окт-07 17:59 

>Почему эти сессии не закрываются после отработки скрипта?

Наверное сессии надо явно закрывать в скрипте. Вообще в Oracle не зря придумывают Сервера приложений и HTMLDB, там держится пул соединений. К PHP конечно это отношения не имеет.


"PHP+Oracle Почему возникает большое количество сессий"
Отправлено BloodAngel , 27-Дек-07 13:39 
Та же проблема, Применял $db->StartTrans(),CommitTrans() и CompleteTrans(), Эффект нулевой. Честно говоря не слишеом шарю в оракле. Подскажите пожалуста. Каким образом можно закрыть сессию из скрипта?

"PHP+Oracle Почему возникает большое количество сессий"
Отправлено BloodAngel , 27-Дек-07 14:26 
Дело в том, что в скрипте таки всё работает. Транзакция открываеться и закрываеться и коммит происходит и всё вробебы работает правильно.
Я почти уверен что дело в файлах конфигурации в частности php.ini .
Нашел настройки для модуля OCI8 но в моем случае работает php_oracle, так уж было это приложение построено ещё до меня/ Подскажите как правильно прописать конфиг

"PHP+Oracle Почему возникает большое количество сессий"
Отправлено sargio , 27-Дек-07 23:48 
$db->Close();



"PHP+Oracle Почему возникает большое количество сессий"
Отправлено BloodAngel , 15-Янв-08 15:15 
Ну, в общем разобрался я с этой проблемой. Дело в том , что АДОДБ помимо стандартной функции подключения к ораклу ещё наворачивает туда кучу всего. В чём именно был бок я разбираться не стал, лениво как то перебирать весь АДОДБ, а сделал немного проще:

$db = NewADOConnection('oracle');
$result_conn = $db->_connectionID = ora_logon('user@Server','password');
if(!$result_conn) {echo 'error...';exit();)

Ну и далее работаем с АДОДБ так, как будто бы подключались через
$db->connect(....)
Если кто ещё столкнёться с подобной проблемой вот вам один из вариантов ее решения.
Удачи