Merge branch 'master' of github.com:gnuboard/gnuboard5
This commit is contained in:
@ -28,6 +28,7 @@ define('G5_HTTPS_DOMAIN', '');
|
||||
|
||||
// 그누보드 디버그바 설정입니다, 실제 서버운영시 false 로 설정해 주세요.
|
||||
define('G5_DEBUG', false);
|
||||
define('G5_COLLECT_QUERY', false);
|
||||
|
||||
// Set Database table default engine is Database default_storage_engine, If you want to use MyISAM or InnoDB, change to MyISAM or InnoDB.
|
||||
// DB에 테이블 생성 시 테이블의 기본 스토리지 엔진을 설정할 수 있습니다.
|
||||
|
||||
@ -1625,7 +1625,7 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
|
||||
|
||||
$is_debug = get_permission_debug_show();
|
||||
|
||||
$start_time = $is_debug ? get_microtime() : 0;
|
||||
$start_time = ($is_debug || G5_COLLECT_QUERY) ? get_microtime() : 0;
|
||||
|
||||
if(function_exists('mysqli_query') && G5_MYSQLI_USE) {
|
||||
if ($error) {
|
||||
@ -1645,18 +1645,68 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
|
||||
}
|
||||
}
|
||||
|
||||
$end_time = $is_debug ? get_microtime() : 0;
|
||||
$end_time = ($is_debug || G5_COLLECT_QUERY) ? get_microtime() : 0;
|
||||
|
||||
$error = null;
|
||||
if ($is_debug || G5_COLLECT_QUERY) {
|
||||
if(function_exists('mysqli_error') && G5_MYSQLI_USE) {
|
||||
$error = array(
|
||||
'error_code' => mysqli_errno($g5['connect_db']),
|
||||
'error_message' => mysqli_error($g5['connect_db']),
|
||||
);
|
||||
} else {
|
||||
$error = array(
|
||||
'error_code' => mysql_errno($g5['connect_db']),
|
||||
'error_message' => mysql_error($g5['connect_db']),
|
||||
);
|
||||
}
|
||||
|
||||
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
$source = array();
|
||||
$found = false;
|
||||
|
||||
foreach ($stack as $index => $trace) {
|
||||
if ($trace['function'] === 'sql_query') {
|
||||
$found = true;
|
||||
}
|
||||
if (isset($stack[$index + 1]) && $stack[$index + 1]['function'] === 'sql_fetch') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($found) {
|
||||
$trace['file'] = str_replace($_SERVER['DOCUMENT_ROOT'], '', $trace['file']);
|
||||
$source['file'] = $trace['file'];
|
||||
$source['line'] = $trace['line'];
|
||||
|
||||
$parent = (isset($stack[$index + 1])) ? $stack[$index + 1] : array();
|
||||
if (isset($parent['function'])) {
|
||||
if (in_array($trace['function'], array('sql_query', 'sql_fetch')) && (isset($parent['function']) && !in_array($parent['function'], array('sql_fetch', 'include', 'include_once', 'require', 'require_once')))) {
|
||||
if (isset($parent['class']) && $parent['class']) {
|
||||
$source['class'] = $parent['class'];
|
||||
$source['function'] = $parent['function'];
|
||||
$source['type'] = $parent['type'];
|
||||
} else {
|
||||
$source['function'] = $parent['function'];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($result && $is_debug) {
|
||||
// 여기에 실행한 sql문을 화면에 표시하는 로직 넣기
|
||||
$g5_debug['sql'][] = array(
|
||||
'sql' => $sql,
|
||||
'result' => $result,
|
||||
'success' => !!$result,
|
||||
'source' => $source,
|
||||
'error_code' => $error['error_code'],
|
||||
'error_message' => $error['error_message'],
|
||||
'start_time' => $start_time,
|
||||
'end_time' => $end_time,
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
run_event('sql_query_after', $result, $sql, $start_time, $end_time);
|
||||
run_event('sql_query_after', $result, $sql, $start_time, $end_time, $error);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -54,7 +54,27 @@ add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/debugbar/style.cs
|
||||
?>
|
||||
<tr>
|
||||
<td scope="row" data-label="실행순서"><?php echo $key; ?></td>
|
||||
<td class="left" data-label="쿼리문"><?php echo $query['sql']; ?></td>
|
||||
<td class="left" data-label="쿼리문">
|
||||
<?php
|
||||
if(isset($query['source']['class'])) {
|
||||
$function = "{$query['source']['class']}{$query['source']['type']}{$query['source']['function']}()";
|
||||
} else if (isset($query['source']['function'])) {
|
||||
$function = "{$query['source']['function']}()";
|
||||
} else {
|
||||
$function = null;
|
||||
}
|
||||
?>
|
||||
<p class="query_source">
|
||||
<em><?php echo "{$query['source']['file']}:{$query['source']['line']}" ?></em><br>
|
||||
<?php if($function) { echo "<em>{$function}</em><br>"; } ?>
|
||||
</p>
|
||||
<?php
|
||||
echo "<p class=\"query_sql\">{$query['sql']}</p>";
|
||||
if(!$query['success']) {
|
||||
echo '<p class="query_error_message">오류: [' . $query['error_code'] . '] ' . $query['error_message'] . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<td data-label="실행시간"><?php echo $show_excuted_time.' ms'; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
@ -23,12 +23,14 @@
|
||||
.debug_table{border:1px solid #ccc;border-collapse:collapse;margin:0;padding:0;width:100%}
|
||||
.debug_table caption{display:none}
|
||||
.debug_table tr{background:#f8f8f8;border:1px solid #ddd;padding:.35em}
|
||||
.debug_table th,.debug_table td{padding:.625em;text-align:center}
|
||||
.debug_table th,.debug_table td{padding:.625em;text-align:center;white-space:nowrap;}
|
||||
.debug_table tbody tr:hover td{background:#c7d4dd!important}
|
||||
.debug_table tbody tr:nth-child(even){background-color:#fff}
|
||||
.debug_table td.left{text-align:left}
|
||||
.debug_table td.left{text-align:left;font-family:monospace;white-space:initial}
|
||||
.debug_table th{font-size:.85em;letter-spacing:.1em;text-transform:uppercase}
|
||||
.debug_table td img{text-align:center}
|
||||
.debug_table .query_sql {font-weight:bold;margin:.5em 0}
|
||||
.debug_table .query_error_message {color:red;margin:.5em 0}
|
||||
|
||||
.debug_table.hook_table th, .debug_table.hook_table td {text-align:left;border:1px solid #ddd;}
|
||||
.hook_table .hook_count{margin-left:3px;font-size:0.9em;color:#7cbc0a}
|
||||
|
||||
Reference in New Issue
Block a user