Nette\Database a možnosť reconnect-u po odpojení

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ricco24
Člen | 141
+
0
-

Ahojte,
je možné instanciu nette\database „reconnectnut“ k database po jej odpojení? Napríklad pri dobehnutí dlhého scriptu pri ktorom sa na začiatku vyberú z db dáta, databáza ma timeoutom pri vykonávaní scriptu odpojí. Na jeho konci by som chcel do db vložiť nové dáta no nenašiel som spôsob ako sa nejako rozumne recconectnúť k db.

Malo by stačiť zavolať

$database->connect()

Ale riadok

if ($this->pdo) {
	return;
}

mi nedovolí vytvoriť novú instanciu pdo a tým sa reconnectúť k databáze.

mkoubik
Člen | 728
+
0
-

Nette\Database s odpojováním a připojováním nepočítá, budeš si muset vytvořit novou instanci (a je to tak lepší).

ricco24
Člen | 141
+
0
-

Pri vytváraní novej instancie Nette\Database nastane v momente keď ju používam spolu s DIC problém. Úpravu služby potrebujem propagovať aj do všetkých ostatných služieb ktoré ju používajú.

Pri použití

$this->getContainer()->removeService('nette.database.default');
$this->getContainer()->addService('nette.database.default', $newInstance);

mi v službách ktoré už boli instancované zostane stará instancia Nette\Database ktorá je od db už odpojená.
Preto by bolo dobré mať možnosť využiť funkciu connect() poprípade novú funkciu reconnect() na opätovné vytvorenie PDO. Tým by nenastal problém pri remove/add service do DIC.

Editoval ricco24 (2. 6. 2014 11:29)

hrach
Člen | 1838
+
-3
-

Klidne posli pull s metodou disconnect a reconnect.