Ukončení připojení k DB MySQL

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

Ahoj, chtěl bych se jen zeptat, zda nette vždy automaticky ukončuje připojení k DB a taky kdy se k DB připojuje…

Protože DB mám nastavenou v config.neon a když např. DB nefunguje, tak se nespustí ani můj projekt – to znamená, že při každém startu nette ihned připojuje DB a celou dobu toto spojení udržuje?

Potřeboval bych také ošetřit, aby se připojení vždy řádně ukončilo… Díky

Edit: protože dnes jsem dal můj projekt na hosting na testování a zahltilo to DB – něco tam zůstalo viset…

Editoval n.u.r.v. (25. 7. 2013 10:39)

Myiyk
Člen | 321
+
0
-

Jestli používáš NDB (Nette Database), tak tam se připojí k DB s prováděním prvního dotazu.
A až je vše provedeno, tak se zase odpojí.

Pokud se nepracuje s databází, tak se vůbec nepřipojuje. A v debug panelu není sekce databáze.

n.u.r.v.
Člen | 485
+
0
-

Ok, díky…

David Matějka
Moderator | 6445
+
0
-

je to trochu slozitejsi, ukoncovani spojeni by teda melo fungovat bez problemu (o to by se melo starat PDO), navazovani, pokud se nepletu, je takto:

v nette 2.0 diky tomu, ze connection dedi od pdo, se spojeni navazuje pri inicializaci sluzby reprezentujici konkretni pripojeni, tedy k pripojeni k databazi dojde napr. i kdyz v presenteru vyzadas Connection, ale nevyuzijes ho.

v nette 2.1 (dev) connection jiz nededi od pdo, preslo se na kompozici a defaultne (z hlediska tridy connection) se spojeni take navaze hned pri instancovani connection, je ale moznost nastavit spojeni jako „lazy“ a v tom pripade se navaze az pri provadeni prvniho dotazu, v sandboxu je spojeni jako „lazy“ jiz oznaceno defaultne

michal.lohnisky
Člen | 64
+
0
-

Ahoj,

dokumentaci se píše

The connection remains active for the lifetime of that PDO object. To close the connection, you need to destroy the object by ensuring that all remaining references to it are deleted–you do this by assigning NULL to the variable that holds the object. If you don't do this explicitly, PHP will automatically close the connection when your script ends.

Dá se tedy v Nette 2.1 nějak explicitně uzavřít spojení?

David Matějka
Moderator | 6445
+
0
-

@michal.lohnisky: api takovou metodu nenabizi. unsetnutim connection by se to spojeni melo uzavrit.. problem je, ze to connection je v DI containeru, v kazdem Selection a tim padem i v kazdem ActiveRow a kdovi kde jeste :)

zaloz issue na githubu, pripadne rovnou posli pull request…

(slo by to uzavrit i ted, ale jen nejakym hackovanim pres reflexi)

thorewi
Člen | 84
+
0
-

takze (idealni) reseni je pridat do Connection metodu disconnect?

public function disconnect {
	$this->pdo = NULL;
}

Editoval thorewi (5. 2. 2014 14:28)