Частые подключения к БД Oracle напрямую из PHP-скриптов могут вызывать высокую нагрузку на систему: каждое соединение порождает строки в текстовых и XML-логах, добавление строк системного аудита СУБД в служебных таблицах, расходуются одновременные подключения к БД в пределах установленного лимита.
Примеры:
- Мобильные приложения абонентов и монтажников интегрированы с Гидрой при помощи PHP-скрипта, получающего набор оперативных данных. Несколько тысяч новых соединений в сутки быстро привели к исчерпанию табличного пространства аудита Oracle.
- CRM на PHP выполняет функцию упрощенного интерфейса для операторов, ограничивая полный доступ к информации в Гидре. Рост числа звонков, а также привычка операторов закреплять вкладки в браузере (автообновление ежеминутно) расходует табличное пространство аудита Oracle.
- В сложной инфраструктуре оператора связи используется единый PHP-сервис преобразования API систем в универсальный. При подключении его к Гидре ощутимо вырос ежедневный объем архивных логов, отражающих изменения в таблицах аудита Oracle.
- PHP-сервис обеспечивает предзагрузку данных из Гидры при входе сотрудника на внутренний сайт. При активной работе полного состава сотрудников на стыке расчетных периодов лимит соединений с БД Oracle превышается и пользователи теряют доступ к веб-приложениям Гидры.
Для снижения нагрузки и объёма служебных данных следует перейти от стандартной функции oci_connect()
// Establish the database connection
$dbh = oci_connect($login, $password, $dsn);
if (!$dbh) {
$e = oci_error();
exit(1);
}
<...>
// Free prepared statement
oci_free_statement($sth);
// Close the database connection
oci_close($dbh); |
к установлению постоянного соединения функцией oci_pconnect()
// Establish the persistent database connection
$dbh = oci_pconnect($login, $password, $dsn);
if (!$dbh) {
$e = oci_error();
exit(1);
}
<...>
// Free prepared statement
oci_free_statement($sth);
// Note: No need to close the persistent connection explicitly |
Документация: