Запускайте запрос каждый раз, когда открывается соединение с базой данных Zend FM

Можно ли выполнить запрос каждый раз, когда открыто новое соединение с базой данных. Этот запрос необходимо выполнить сразу после открытия соединения с базой данных, потому что этот запрос вызывает хранимую процедуру, которая настраивает различные элементы управления доступом к таблицам с использованием сведений о пользователе, который запросил выполнить запрос. Я пытался вызвать эту хранимую процедуру в разных местах, и все они успешны, но я хотел бы получить некоторую обратную связь.

Я поместил этот запрос в класс абстрактного маппера, который расширяют другие мапперы. Каждый раз, когда создается новый сопоставитель, вызывается хранимая процедура.

Еще одно место для вызова этого хранимой процедуры — перед вызовами других методов преобразования. Недостатком этого является то, что будет много повторяющегося кода (кода, который вызывает хранимую процедуру).

Последнее место для вызова — Bootstrap.php. каждый _в этом метод в этом файле должен запускаться только один раз при каждой загрузке приложения. Я решил поместить этот вызов в хранимую процедуру в одном из Bootstrap.php для одного из наших модулей. Это пока лучшее место, о котором я могу думать, потому что мне нужно только написать код, который вызывает хранимую процедуру один раз, и каждый раз, когда к приложению обращаются, запускается метод initialize. Недостатком этого является то, что я не знаю побочных эффектов размещения вещей в Bootstrap.php.

Одним из главных недостатков всех этих мест является то, что хранимая процедура вызывается много раз. Чтобы управление доступом работало, хранимую процедуру нужно вызывать только один раз за сеанс базы данных. Это не вызовет никаких проблем, кроме скорости из-за ненужных звонков.

Есть ли лучшие места, чтобы поместить этот вызов в хранимую процедуру? Есть ли в Zend FM эта функция где-то реализована? Есть ли что-то, что я должен принять во внимание, если я помещу это в начальная загрузка файл.

Спасибо за чтение этого и любую помощь, оказанную.

  • DB2 Версия 10.5
  • Платформа Linux
  • Zend FM версия 2

0

Решение

В качестве альтернативы вы можете настроить это на стороне базы данных, установив параметр конфигурации базы данных connect_proc на имя вашей хранимой процедуры. Обратите внимание, что процедура будет вызываться для всех подключений, удаленных и локальных, включая подключения администратора базы данных.

Если вам необходимо передать дополнительную информацию от клиента connect_proc рутина, вы могли бы использовать строка учета клиента параметр соединения, который вы могли бы затем прочитать в процедуре, используя MON_GET_CONNECTION() функция:

SET acct_string = (
SELECT client_acctng FROM TABLE (
MON_GET_CONNECTION(MON_GET_APPLICATION_HANDLE(),-1)
)
)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]