add stacktrace to query logger

This commit is contained in:
Robin Appelman 2016-08-24 14:37:15 +02:00
parent 8d8366762b
commit 1c3b1e5797
3 changed files with 33 additions and 2 deletions

View File

@ -34,15 +34,18 @@ class Query implements IQuery {
private $end; private $end;
private $stack;
/** /**
* @param string $sql * @param string $sql
* @param array $params * @param array $params
* @param int $start * @param int $start
*/ */
public function __construct($sql, $params, $start) { public function __construct($sql, $params, $start, array $stack) {
$this->sql = $sql; $this->sql = $sql;
$this->params = $params; $this->params = $params;
$this->start = $start; $this->start = $start;
$this->stack = $stack;
} }
public function end($time) { public function end($time) {
@ -69,4 +72,12 @@ class Query implements IQuery {
public function getDuration() { public function getDuration() {
return $this->end - $this->start; return $this->end - $this->start;
} }
public function getStartTime() {
return $this->start;
}
public function getStacktrace() {
return $this->stack;
}
} }

View File

@ -42,7 +42,15 @@ class QueryLogger implements IQueryLogger {
* @param array $types * @param array $types
*/ */
public function startQuery($sql, array $params = null, array $types = null) { public function startQuery($sql, array $params = null, array $types = null) {
$this->activeQuery = new Query($sql, $params, microtime(true)); $this->activeQuery = new Query($sql, $params, microtime(true), $this->getStack());
}
private function getStack() {
$stack = debug_backtrace();
array_shift($stack);
array_shift($stack);
array_shift($stack);
return $stack;
} }
public function stopQuery() { public function stopQuery() {

View File

@ -47,4 +47,16 @@ interface IQuery {
* @since 8.0.0 * @since 8.0.0
*/ */
public function getDuration(); public function getDuration();
/**
* @return float
* @since 9.2.0
*/
public function getStartTime();
/**
* @return array
* @since 9.2.0
*/
public function getStacktrace();
} }