tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

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 :]