Nette Database a Listener?
- Kaczmi
- Člen | 8
Ahoj,
v Nette\Database\Connection je událost onQuery, která v druhém parametru
předává buď PDOException nebo ResultSet.
ResultSet má funkci getQueryString(), pomocí nějakého regex výrazu můžeš
vyhodnotit, jestli je dotaz Insert/Update.
Inspirací může být třeba ConnectionPanel v Tracy
https://github.com/…ionPanel.php#L72
- lukasnov
- Člen | 12
Kaczmi napsal(a):
Ahoj,
v Nette\Database\Connection je událost onQuery, která v druhém parametru předává buď PDOException nebo ResultSet.
ResultSet má funkci getQueryString(), pomocí nějakého regex výrazu můžeš vyhodnotit, jestli je dotaz Insert/Update.Inspirací může být třeba ConnectionPanel v Tracy
https://github.com/…ionPanel.php#L72
díky za tip. Bohužel asi to musím stejně vymyslet jinak, protože si nemohu dovolit kontrolovat každé query. Ale třeba v jiném projektu to půjde, takže stejně děkuju :)
- lukasnov
- Člen | 12
CZechBoY napsal(a):
Proc si to nemuzes dovolit?
Myslím, že kvůli náročnosti. Listener je potřeba pouze do admin modulu a zbytečně by to zpomalovolo front, kde se bohužel na 1 request dělá cca 200 queries – což asi není úplně správně, ale tak to je. A každý kontrolovat přes regex když vím, že na 100% to není insert/update, je zbytečné. Asi budu ukládát data pouze přes managera a odchytávat to tam.
- David Grudl
- Nette Core | 8227
Vykonání i triviálního databázového dotazu trvá určitě déle než tisíce jednoduchých regexů.