我的控制器調用請求數據庫並返回結果的方法。不要重新連接控制器調用數據庫
$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次,而且由於這個方法經常被調用(自動完成系統),所以我需要記住連接在每次調用時不重新連接。
我試圖記住在會話
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;
$連接,但它更糟糕的是,因爲如果我有一個無限循環......
所以,我怎麼能叫我的方法,無需重新連接數據庫在每次打電話?
感謝您的幫助
持久連接爲什麼它連接了一整秒?你的數據庫服務器在同一臺計算機上嗎?如果是這樣 - 你嘗試127.0.0.1而不是本地主機? –
沒有它調用一個不同的服務器 – Macbernie