从PHP建立Oracle DB连接而不进行重复连接

时间:2011-09-14 06:03:02

标签: php oracle

我目前正在建立这样的Oracle连接:

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

我使用我的oci8查询:

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

但是,每次我想查询时,我都会创建一个新连接,即我多次$c = ...。这是一件很愚蠢的事情。在程序中的任何位置建立单个Oracle连接并使用该连接的正确或最佳方法是什么?我可以使$c I全局变量,但全局变量并不好。

非常感谢:)。

2 个答案:

答案 0 :(得分:1)

也许您应该使用oci_pconnect,因为它会创建持久连接。 php manual oci_pconnect

另一种方法是使用单例模式,不鼓励因为你无法对它进行单元测试。

答案 1 :(得分:0)

你不能使用静态变量,就像这样......

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;
        }
}

它仍然使您的数据库处理(间接)全局,但您只有一个连接,这样它就可以防止"意外"更新