控制器调用不连接数据库

Do not reconnect the database for controler call

我的控制器调用了一个请求数据库的方法,return 结果。

$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 seconde,并且因为这个方法经常被调用(自动完成系统),我需要记住连接而不是在每次调用时重新连接。

我试着记住会话中的$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;

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

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

感谢帮助

尝试在connectBDD

中建立持久连接
$dbh = new PDO('....', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));

http://php.net/manual/en/pdo.connections.php