控制器调用不连接数据库
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
));
我的控制器调用了一个请求数据库的方法,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
));