Oznámení
vypis SQL použitých SQL dotazů a časy
před 10 lety
- zacatecnik2
- Člen | 4
Pátrám, jak nejjednodušeji vypsat na konci stránky list použitých sql
dotazů (obarvených, formátovaných) a doba trvání? Takový souhrn
stránky..
Vím, že v nette je dubug::dump.
To co je ve firebugu, ale chci to vypsat přímo do stránky..
Nechci do souboru dibi::getProfiler()->setFile(‚log.sql‘);
Pole dotazů je tady..
dibi::getProfiler()->tickets;
před 10 lety
- zacatecnik2
- Člen | 4
Jde nějak udělat výpis použitých SQL dotazů?
před 10 lety
- vlki
- Člen | 218
No, myslím, že si budeš muset napsat vlastní Profiler, co bude implementovat IDibiProfiler. Jen místo toho, aby to zapisoval do souboru, tak to bude jen někam ukládat. Ty si pak někde jen explicitně zavoláš vypsání všech dotazů.
Šlo by toho dosáhnout poděděním aktuálního DibiProfileru s tím, že by nastavil file na NULL a useFirebug na FALSE. Tím by se vlastně sql zapisovaly jen do atributu tickets, ze kterého by sis to vytáhl a zformátoval podle potřeb. Není vlastně nutné ani dělat potomka, když je atribut tickets veřejný.
před 10 lety
- LastHunter
- Člen | 1539
Já myslím, že ti bude stačít ten DibiProfiler
, jak říká
vlki :)
Co musíš provést – v configu připojení nastavit
profiler = TRUE
a po připojení k DB zavolat
dibi::getProfiler()->setFile('cestaKLogu')
;
Bude se ti to tam zapisovat.
před 10 lety
- zacatecnik2
- Člen | 4
a po připojení k DB zavolat
dibi::getProfiler()->setFile('cestaKLogu')
;
setFile nastaví zapisování do souboru.. Já potřebuji do proměnné a
vypsat na konec html stránky.
Něco jako -dibi::getProfiler()->getLog();
<?php
$log = dibi::getProfiler();
debug::dump($log);
?>
zobrazí:
`object(DibiProfiler) (4) {
„file“ private ⇒ NULL
„useFirebug“ ⇒ bool(TRUE)
„filter“ private ⇒ int(1023)
„tickets“ ⇒ array(3) {
0 ⇒ array(3) {
0 ⇒ object(DibiConnection) (5) {
…
}
1 ⇒ int(1)
2 ⇒ NULL
}
1 ⇒ array(3) {
0 ⇒ object(DibiConnection) (5) {
…
}
1 ⇒ int(4)
2 ⇒ string(39) „SELECT name FROM blog
WHERE id
=
10“
}
2 ⇒ array(3) {
0 ⇒ object(DibiConnection) (5) {
…
}
1 ⇒ int(4)
2 ⇒ string(35) „SELECT * FROM blog
WHERE id
=
3“
}
}
}
`
A v tom objektu nevidím vůbec dobu trvání SQL dotazů. Todle se
zobrazí ve firebugu.
`Time SQL Statement Rows Connection
0.247 SELECT name FROM blog
WHERE id
= 10
1 mysql/0
0.153 SELECT * FROM blog
WHERE id
= 3 1 mysql/0`
A chtěl bych to vypsat normálně, ne do FB.
Editoval zacatecnik2 (29. 10. 2009 14:52)
před 10 lety
- zacatecnik2
- Člen | 4
dibi::dump(); mi také udělá výpis (ale jenom posledního dotazu) a jenom
sql dotaz (bez doby trvání)..
A navíc ho hezky obarví
před 9 lety
- chemikus
- Člen | 35
Můžete mi prosím někdo, jako pro absolutního blbce napsat, jak mám vypsat SQL dotaz, který se provádí?
v configu mám
[development < common]
; database options in development mode
database.profiler = TRUE
database.database = hodnoti_cz
database.charset = utf8
database.host = localhost
database.username = root
database.password = newpwd7
V bootstrapu se připojím k db
NEnvironment::loadConfig();
dibi::connect(NEnvironment::getConfig('database')->toArray());
a v classe používám např.
<?php
public function edit($arr, $uzivatel) {
return dibi::query("UPDATE [uzivatele] SET ", $arr, " WHERE [uzivatel] = %s", $uzivatel);
}
?>
Můžete mi prosím někdo říct, jak vypíšu tento UPDATE příkaz? Firebug nainstalovaný ve Firefoxu mám, ale zaboha tam nic nemůžu najít. Prosím, opravdu jako pro blbce mi to popište… díky
Editoval chemikus (21. 9. 2010 15:49)
před 9 lety
- Ondřej Brejla
- Člen | 748
Hledej funkci test()
?
před 9 lety
- chemikus
- Člen | 35
Ondřej Brejla napsal(a):
Hledej funkci
test()
?
Nebylo by lepší pro absolutního amatéra (pro mě) říct, aby místo dibi::query napsal dibi::test ? :-)
před 9 lety
- Ondřej Brejla
- Člen | 748
Ne, to tě nenaučí hledat…;-)
před 9 lety
- paranoiq
- Člen | 388
Ondřej Brejla napsal(a):
Ne, to tě nenaučí hledat…;-)
je vidět, že Ondra není „guru“ nadarmo :]