Создание соединения с БД Oracle из PHP без дублирования соединений - PullRequest
1 голос
/ 14 сентября 2011

В настоящее время я устанавливаю соединение с Oracle следующим образом:

$c = oci_connect('username', 'password', 'host');

, которое я использую в своих запросах oci8 следующим образом:

$s = oci_parse($this->c, $query);
oci_execute($s);

Однако каждый раз, когда я хочу сделать запрос, я создаюновое соединение, т.е. я делаю $c = ... много раз.Это глупо.Как правильно или лучше всего создать одно соединение Oracle и использовать это соединение из любой точки программы?Я могу сделать $c I глобальными переменными, но глобальные переменные не хороши.

Большое спасибо:).

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Возможно, вам следует использовать oci_pconnect, так как он создает постоянное соединение. php manual oci_pconnect

Другим способом может быть использование одноэлементного паттерна, который не рекомендуется, поскольку вы не можете выполнить его модульное тестирование.

0 голосов
/ 02 февраля 2012

Не могли бы вы использовать статическую переменную, как это ...

class DbHandler {
    private static $_mOciHandle;

    private function __construct() {}

    GetHandle ($u, $p, $dsn, $charset) {
        if (!isset(self::$_mOciHandle))
            self::$_mOciHandle = oci_connect ($u, $p, $dsn, $charset);
        return self::$_mOciHandle;
        }
}

Он по-прежнему отображает дескриптор базы данных (косвенно) как глобальный, но у вас только одно подключение, и таким образом он защищен от «случайного» обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...