Page tree
Skip to end of metadata
Go to start of metadata

Частые подключения к БД Oracle напрямую из PHP-скриптов могут вызывать высокую нагрузку на систему: каждое соединение порождает строки в текстовых и XML-логах, добавление строк системного аудита СУБД в служебных таблицах, расходуются одновременные подключения к БД в пределах установленного лимита.

Примеры:

  1. Мобильные приложения абонентов и монтажников интегрированы с Гидрой при помощи PHP-скрипта, получающего набор оперативных данных. Несколько тысяч новых соединений в сутки быстро привели к исчерпанию табличного пространства аудита Oracle.
  2. CRM на PHP выполняет функцию упрощенного интерфейса для операторов, ограничивая полный доступ к информации в Гидре. Рост числа звонков, а также привычка операторов закреплять вкладки в браузере (автообновление ежеминутно) расходует табличное пространство аудита Oracle.
  3. В сложной инфраструктуре оператора связи используется единый PHP-сервис преобразования API систем в универсальный. При подключении его к Гидре ощутимо вырос ежедневный объем архивных логов, отражающих изменения в таблицах аудита Oracle.
  4. 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


Документация:

  • No labels