Nedokonalé zjišťování zdroje SQL dotazu vol.2

trash
Člen | 2
+
0
-

Zdravíčko,

řeším něco podobného jako kolega zde.
Akorát v rámci čistého dibi a Tracy. Metody dibi máme obaleny ještě vlastním wrapperem, takže když pak Tracy ukazuje u SQL dotazu backtrace tak nám to odkazuje na náš wrapper a ne odkud to bylo vyvoláno.

Takže ve zkratce by se mi hodil výpis backtrace u sql dotazu více do hloubky. A asi pro ostatní s možností konfigurace jak do hloubky vypisovat.

(dibi)Event.php:

$dibiDir = dirname((new \ReflectionClass('dibi'))->getFileName()) . DIRECTORY_SEPARATOR;
		foreach (debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) as $row) {
			if (isset($row['file']) && is_file($row['file']) && !str_starts_with($row['file'], $dibiDir)) {
				$this->source[] = [$row['file'], (int) $row['line']]; // pridavat do pole
				//break; - nedelat brake
			}
		}

(tracy)Panel.php

foreach($event->source as $sEvent) // prochazet a vypisovat pole
{
	// moznost z nastaveni vypisovat urcitou hloubku backtrace
	$s .= Tracy\Helpers::editorLink($sEvent[0], $sEvent[1]); // editorLink s <br /> na konci
}

Je to jenom takovej rychlej nástřel. Nevím, jestli to neovlivní něco jiného nebo jestli jsem nepřehlédnul možnost jak to nastavit.

Co myslíte ?

Děkuji

trash
Člen | 2
+
0
-

Případně implementace tracySkipLocation ? Měl jsem podobný problém u dumpu ale tam jsem to vyřešil tímto

David Grudl
Nette Core | 7780
+
0
-

Hele klidně na to pošli PR. Třeba s anotací dibiSkipLocation.