我的控制器调用请求数据库的方法并返回结果。
$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