Completely disable Debug logging if it is not enabled for the current user

관리자 또는 특정 IP에서만 디버그 기능을 사용하도록 설정된 경우,
그 밖의 요청에서는 어떤 에러메시지, 쿼리, 트리거 소요시간 등의 기록도
디버그 클래스에 저장하지 않도록 변경합니다.

워닝이 많이 발생하는 PHP 8.0에서는 20~30%의 성능 개선 효과가 있습니다.
This commit is contained in:
Kijin Sung 2021-01-07 02:51:43 +09:00
parent 02122cb383
commit 1a204d8c52
11 changed files with 108 additions and 74 deletions

View file

@ -61,7 +61,10 @@ class DBHelper extends \PDO
$elapsed_time = microtime(true) - $start_time;
$db_class->addElapsedTime($elapsed_time);
$db_class->setError(-1, $e->getMessage());
Debug::addQuery($db_class->getQueryLog($statement, $elapsed_time));
if (Debug::isEnabledForCurrentUser())
{
Debug::addQuery($db_class->getQueryLog($statement, $elapsed_time));
}
/**
* This is a new feature in Rhymix 2.0 so we don't have to mess
@ -110,7 +113,10 @@ class DBHelper extends \PDO
{
$elapsed_time = microtime(true) - $start_time;
$db_class->addElapsedTime($elapsed_time);
Debug::addQuery($db_class->getQueryLog($statement, $elapsed_time));
if (Debug::isEnabledForCurrentUser())
{
Debug::addQuery($db_class->getQueryLog($statement, $elapsed_time));
}
}
return $stmt;
@ -140,7 +146,10 @@ class DBHelper extends \PDO
{
$elapsed_time = microtime(true) - $start_time;
$db_class->addElapsedTime($elapsed_time);
Debug::addQuery($db_class->getQueryLog($query, $elapsed_time));
if (Debug::isEnabledForCurrentUser())
{
Debug::addQuery($db_class->getQueryLog($query, $elapsed_time));
}
}
return $result;

View file

@ -57,7 +57,10 @@ class DBStmtHelper extends \PDOStatement
{
$elapsed_time = microtime(true) - $start_time;
$db_class->addElapsedTime($elapsed_time);
Debug::addQuery($db_class->getQueryLog($this->queryString, $elapsed_time));
if (Debug::isEnabledForCurrentUser())
{
Debug::addQuery($db_class->getQueryLog($this->queryString, $elapsed_time));
}
}
return $result;