不要重新连接数据库以调用控制器



我的控制器调用请求数据库的方法并返回结果。

$connect = $this->connectBDD();
$rq = "SELECT naf, libelle FROM mytable WHERE naf ILIKE '$txt%'";
$t  = $connect->prepare($rq); $t->execute();
$t->setFetchMode(PDO::FETCH_OBJ);
$tab = array();
while($top = $t->fetch()) {
    $tab[] = array(
        "text" => $top->naf . ": " . $top->libelle,
        "value" => $top->naf
    );
}
$t->closeCursor();
return $tab;

问题来自第一行$connect = $this->connectBDD();谁打开连接。它需要时间,大约1秒,因为这个方法是经常调用的(自动完成系统),我需要记住连接,以免在每次调用时重新连接。

我试着记住$connect在会话

if( null === $this->app['session']->get('ac') ) {
    $this->app['session']->set('ac', $this->connectBDD() );
}
$connect = $this->app['session']->get('ac');

$rq = "SELECT naf, libelle FROM mytable WHERE naf ILIKE '$txt%'";
$t  = $connect->prepare($rq); $t->execute();
$t->setFetchMode(PDO::FETCH_OBJ);
$tab = array();
while($top = $t->fetch()) {
    $tab[] = array(
        "text" => $top->naf . ": " . $top->libelle,
        "value" => $top->naf
    );
}
$t->closeCursor();
return $tab;

但更糟糕的是,好像我有一个无限循环…

那么,如何在每次调用时不重新连接数据库的情况下调用我的方法?

Thanks for help

尝试在connectBDD中建立持久连接

$dbh = new PDO('....', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
http://php.net/manual/en/pdo.connections.php

最新更新