tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Opakované připojování k databázi po selhání prvního pokusu

před 7 lety

Ascaria
Člen | 187

Zdravím,

pokud mám lazy připojení k databázi, pravděpodobně se to při opakovaném selhávání (např změna hesla u db) bude u každého dotazu pokoušet připojit znovu. Jde v dibi nastavit, aby se to pokusilo připojit jen jednou a každej další pokus by rovnou házel exception? Případně po prvním pokusu o připojení vypnout lazy…

před 7 lety

Milo
Nette Core | 1124

Lazy připojení spočívá v tom, že se buď vytvoří připojení k databázi ihned při vytváření objektu DibiConnection anebo až ve chvíli, kdy je potřeba. Tedy při volání prvního dotazu.

A pokud připojení při volání prvního dotazu selže, vyhodí se DibiException.

před 7 lety

Ascaria
Člen | 187

Ano vyhodí, ale pokud ten exception odchytím a pokračuju dál (např když selže dotaz, bez kterého se aplikace může vzpamatovat), tak další dotaz způsobí pokus o připojení znovu. V případě, že to bude způsobovat timeouty po nějakých 20ti vteřinách při každém neúspěšném připojení, je pak docela zlo na to čekat… Řešení je asi vypnout lazy, ale co když je lazy potřeba..

před 7 lety

Milo
Nette Core | 1124

Tohle s lazy připojení IMHO souvisí okrajově. Ty řešíš případ, kdy chceš nechat aplikaci běžet i přes chybu prováděného dotazu. Pokud tedy usoudíš, že není třeba dotaz úspěšně dokončit z jakéhokoliv důvodu, měl bys podle kódu vyjímky tento důvod kategorizovat a podle toho se rozhodnout jak dál.

Lazy „vypnout“ za běhu už nelze. Objekt DibiConnection už jednou existuje bez aktivního DB spojení. U „ne-lazy“ přístupu by neexistoval.

před 7 lety

Ascaria
Člen | 187

Chápu, takže je to na mě. :)