Oznámení
Dibi Profiler
před 11 lety
- simon
- Člen | 98
Zdravim,
chci jako vypsi profileru pouzivat FireBUG (pres FirePHP).
Ale nevim jak tam jednoduse dostat vypsi VSECH sql dotazu i s jejich delkou
trvani a vysledkem.
Jde to udelat nejak jednoduse jako napriklad v Zend Frameworku?
Predem velice dekuji.
před 11 lety
- simon
- Člen | 98
diky moc, ja dokazu do firebugu dostat posledni dotaz, jeho cas, celkovy cas atd. ale jak tam dostat vsechny dotazy probehle na strance to nevim. asi by nemusela byt primo integrace, staci jen metoda ktera bude vracet pole se vsemy probehlymi dotazy.
jeste jednou diky
před 11 lety
- David Grudl
- Nette Core | 6806
Logování do Firebugu by mělo fungovat, stačí aktivovat profiler:
dibi::connect(array(
'driver' => 'sqlite',
'database' => 'sample.sdb',
'profiler' => TRUE, // zapne profiler
));
před 11 lety
- simon
- Člen | 98
diky moc, to je přesně ono!
před 11 lety
- PetrP
- Člen | 587
Dají se vypisovat všechny dotazi s tou délkou atd i jinam než do fireBugu? (třeba do pole)
před 11 lety
- phx
- Člen | 652
Trosku se mi michaji profiler jako FireBug a profiler jako logovani do souboru.
Logovani do souboru zapnut takto? Zadne nastavovani v
dibi:connect()
???
$profiler = new DibiProfiler;
dibi::getConnection()->setProfiler($profiler);
dibi::getProfiler()->setFile('log/dibi.log');
Kdyz ale pridam do dibi::connect()
nastaveni
'profiler'=>TRUE
tak se bude logovat do souboru a zaroven do
FireBug? Takze pokud toto nastaveni dam na produkcni server tak je to dost
velika dira;)) Takze na to asi bacha co?
A posledni vec. Jak logovat do souboru POUZE chybne dotazy? Nebo idealne chybne dotazy udelat do jineho souboru? Jde to nejak?
před 11 lety
- phx
- Člen | 652
Tak jsem se do toho kapku ponoril a mel bych tyto pripominky:
- Neco podobneho jako DibiProfiler::filter by mohlo byt i na file
- Libilo by se i vice souboru s ruznymi filtry
Uznavam, ze toto si muzu udelat sam, ale tohle by mel David opravit:
- Pokud na produkcnim serveru chci logovat SQL do souboru automaticky se pousti i FireBug, coz je celkem bezpecnostni dira. Idealni by bylo aby to respektovalo nejake nastaveni v INI
// DibiProfiler
public function __construct()
{
// dira...
$this->useFirebug = isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP/');
}
A jen pro upesneni moje uvedena metoda logovani do souboru preplacne nastaveni z INI. Abych to uvedl na pravou miru jak jsem to ted pochopil.
Nastaveni profileru:
$profiler = new DibiProfiler;
dibi::getConnection()->setProfiler($profiler);
// nebo v dibi::connect
dibi::connect(array(
'driver' => 'sqlite',
'database' => 'sample.sdb',
'profiler' => TRUE, // zapne profiler
));
// nebo v INI
// database.profiler = TRUE
Bohuzel kdyz je zapnuty profiler tak se posilaji SQL dotazy do FireBug. Nebo to lze nejak vypnout?
Pokud je zapnuty profiler lze zapnout logovani do souboru:
dibi::getProfiler()->setFile('log/dibi.log');
// lze to i nejak v INI ???
před 11 lety
- romansklenar
- Člen | 657
Já bych jen dodal jeden tip: bylo by užitečné, kdyby šlo metodě setFile
předat i nevyexpandované proměnné tak jako
u metody Nette\Debug::enable()
dibi::getProfiler()->setFile('%logDir%/dibi.log');
Editoval romansklenar (30. 10. 2008 22:49)
před 11 lety
- David Grudl
- Nette Core | 6806
phx napsal(a):
Trosku se mi michaji profiler jako FireBug a profiler jako logovani do souboru.
Mám v plánu to rozdělit do dvou tříd.
Logovani do souboru zapnut takto? Zadne nastavovani v
dibi:connect()
???$profiler = new DibiProfiler; dibi::getConnection()->setProfiler($profiler); dibi::getProfiler()->setFile('log/dibi.log');
Profiler se zapne buď přes connect()
(volba
'profiler' => TRUE
nebo
'profiler' => 'jmenotridyprofileru'
), nebo metodou
setProfiler()
. Obojí je ekvivalentní.
Logování do souboru se musí zapnout až ve třídě
DibiProfiler
metodou setFile()
.
Kdyz ale pridam do
dibi::connect()
nastaveni'profiler'=>TRUE
tak se bude logovat do souboru a zaroven do FireBug? Takze pokud toto nastaveni dam na produkcni server tak je to dost velika dira;)) Takze na to asi bacha co?
No logování SQL do souboru vůbec nebylo zamýšleno pro produkční servery (tam má smysl logovat výjimky).
A posledni vec. Jak logovat do souboru POUZE chybne dotazy? Nebo idealne chybne dotazy udelat do jineho souboru? Jde to nejak?
Chybnými dotazy myslíš dotazy, které vyhodí výjimku? Přikláním se v poslední době spíš k tomu, aby se tento úkol z dibi přenesl na aplikaci. Je to téma k diskusi.