Minor fixes (#166)

* Minor fixes

* Update CHANGELOG.md
This commit is contained in:
Roman Kelesidis 2023-04-30 15:29:19 +07:00 committed by GitHub
parent 843641c22a
commit 14554da61e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 70 deletions

View File

@ -28,7 +28,7 @@
- Use constants instead of string literals [\#151](https://github.com/torrentpier/torrentpier-lts/pull/151), [\#160](https://github.com/torrentpier/torrentpier-lts/pull/160) ([belomaxorka](https://github.com/belomaxorka)) - Use constants instead of string literals [\#151](https://github.com/torrentpier/torrentpier-lts/pull/151), [\#160](https://github.com/torrentpier/torrentpier-lts/pull/160) ([belomaxorka](https://github.com/belomaxorka))
- Sync language (html dir) with latest sources [\#152](https://github.com/torrentpier/torrentpier-lts/pull/152) ([belomaxorka](https://github.com/belomaxorka)) - Sync language (html dir) with latest sources [\#152](https://github.com/torrentpier/torrentpier-lts/pull/152) ([belomaxorka](https://github.com/belomaxorka))
- Updated UK lang icons [\#155](https://github.com/torrentpier/torrentpier-lts/pull/155) ([belomaxorka](https://github.com/belomaxorka)) - Updated UK lang icons [\#155](https://github.com/torrentpier/torrentpier-lts/pull/155) ([belomaxorka](https://github.com/belomaxorka))
- Minor fixes [\#124](https://github.com/torrentpier/torrentpier-lts/pull/124), [\#133](https://github.com/torrentpier/torrentpier-lts/pull/133), [\#135](https://github.com/torrentpier/torrentpier-lts/pull/135), [\#136](https://github.com/torrentpier/torrentpier-lts/pull/136), [\#139](https://github.com/torrentpier/torrentpier-lts/pull/139), [\#142](https://github.com/torrentpier/torrentpier-lts/pull/142), [\#144](https://github.com/torrentpier/torrentpier-lts/pull/144), [\#145](https://github.com/torrentpier/torrentpier-lts/pull/145), [\#148](https://github.com/torrentpier/torrentpier-lts/pull/148), [\#153](https://github.com/torrentpier/torrentpier-lts/pull/153), [\#154](https://github.com/torrentpier/torrentpier-lts/pull/154), [\#156](https://github.com/torrentpier/torrentpier-lts/pull/156), [\#157](https://github.com/torrentpier/torrentpier-lts/pull/157), [\#158](https://github.com/torrentpier/torrentpier-lts/pull/158), [\#159](https://github.com/torrentpier/torrentpier-lts/pull/159), [\#162](https://github.com/torrentpier/torrentpier-lts/pull/162), [\#163](https://github.com/torrentpier/torrentpier-lts/pull/163), [\#164](https://github.com/torrentpier/torrentpier-lts/pull/164), [\#165](https://github.com/torrentpier/torrentpier-lts/pull/165) ([belomaxorka](https://github.com/belomaxorka)) - Minor fixes [\#124](https://github.com/torrentpier/torrentpier-lts/pull/124), [\#133](https://github.com/torrentpier/torrentpier-lts/pull/133), [\#135](https://github.com/torrentpier/torrentpier-lts/pull/135), [\#136](https://github.com/torrentpier/torrentpier-lts/pull/136), [\#139](https://github.com/torrentpier/torrentpier-lts/pull/139), [\#142](https://github.com/torrentpier/torrentpier-lts/pull/142), [\#144](https://github.com/torrentpier/torrentpier-lts/pull/144), [\#145](https://github.com/torrentpier/torrentpier-lts/pull/145), [\#148](https://github.com/torrentpier/torrentpier-lts/pull/148), [\#153](https://github.com/torrentpier/torrentpier-lts/pull/153), [\#154](https://github.com/torrentpier/torrentpier-lts/pull/154), [\#156](https://github.com/torrentpier/torrentpier-lts/pull/156), [\#157](https://github.com/torrentpier/torrentpier-lts/pull/157), [\#158](https://github.com/torrentpier/torrentpier-lts/pull/158), [\#159](https://github.com/torrentpier/torrentpier-lts/pull/159), [\#162](https://github.com/torrentpier/torrentpier-lts/pull/162), [\#163](https://github.com/torrentpier/torrentpier-lts/pull/163), [\#164](https://github.com/torrentpier/torrentpier-lts/pull/164), [\#165](https://github.com/torrentpier/torrentpier-lts/pull/165), [\#166](https://github.com/torrentpier/torrentpier-lts/pull/166) ([belomaxorka](https://github.com/belomaxorka))
## [v2.1.5-2023.03](https://github.com/torrentpier/torrentpier-lts/tree/v2.1.5-2023.03) (2023-04-04) ## [v2.1.5-2023.03](https://github.com/torrentpier/torrentpier-lts/tree/v2.1.5-2023.03) (2023-04-04)
[Full Changelog](https://github.com/torrentpier/torrentpier-lts/compare/v2.1.5-2023.03...main) [Full Changelog](https://github.com/torrentpier/torrentpier-lts/compare/v2.1.5-2023.03...main)

View File

@ -35,6 +35,8 @@ class sql_db
var $DBS = array(); var $DBS = array();
var $engine = 'MySQL';
/** /**
* Constructor * Constructor
*/ */
@ -95,11 +97,12 @@ class sql_db
{ {
$server = (DBG_USER) ? $this->cfg['dbhost'] : ''; $server = (DBG_USER) ? $this->cfg['dbhost'] : '';
header("HTTP/1.0 503 Service Unavailable"); header("HTTP/1.0 503 Service Unavailable");
$con_error = "Could not connect to {$this->engine} server $server";
if (DBG_USER) if (DBG_USER)
{ {
dbg_log("Could not connect to mysql server $server", "{$server}-DB-connect-FAIL_" . time()); dbg_log($con_error, "{$server}-DB-connect-FAIL_" . time());
} }
die("Could not connect to mysql server $server"); die($con_error);
} }
register_shutdown_function(array(&$this, 'close')); register_shutdown_function(array(&$this, 'close'));
@ -911,81 +914,84 @@ class sql_db
switch ($mode) switch ($mode)
{ {
case 'start': case 'start':
$this->explain_hold = ''; $this->explain_hold = '';
// TODO: добавить поддержку многотабличных запросов // TODO: добавить поддержку многотабличных запросов
if (preg_match('#UPDATE ([a-z0-9_]+).*?WHERE(.*)/#', $query, $m)) if (preg_match('#UPDATE ([a-z0-9_]+).*?WHERE(.*)/#', $query, $m))
{ {
$query = "SELECT * FROM $m[1] WHERE $m[2]"; $query = "SELECT * FROM $m[1] WHERE $m[2]";
} }
else if (preg_match('#DELETE FROM ([a-z0-9_]+).*?WHERE(.*)#s', $query, $m)) else if (preg_match('#DELETE FROM ([a-z0-9_]+).*?WHERE(.*)#s', $query, $m))
{ {
$query = "SELECT * FROM $m[1] WHERE $m[2]"; $query = "SELECT * FROM $m[1] WHERE $m[2]";
} }
if (preg_match('#^SELECT#', $query)) if (preg_match('#^SELECT#', $query))
{ {
$html_table = false; $html_table = false;
if ($result = @mysql_query("EXPLAIN $query", $this->link)) if ($result = @mysql_query("EXPLAIN $query", $this->link))
{ {
while ($row = @mysql_fetch_assoc($result)) while ($row = @mysql_fetch_assoc($result))
{ {
$html_table = $this->explain('add_explain_row', $html_table, $row); $html_table = $this->explain('add_explain_row', $html_table, $row);
} }
} }
if ($html_table) if ($html_table)
{ {
$this->explain_hold .= '</table>'; $this->explain_hold .= '</table>';
} }
} }
break; break;
case 'stop': case 'stop':
if (!$this->explain_hold) break; if (!$this->explain_hold) break;
$id = $this->dbg_id-1; $id = $this->dbg_id-1;
$htid = 'expl-'. intval($this->link) .'-'. $id; $htid = 'expl-'. intval($this->link) .'-'. $id;
$dbg = $this->dbg[$id]; $dbg = $this->dbg[$id];
$this->explain_out .= ' $this->explain_out .= '
<table width="98%" cellpadding="0" cellspacing="0" class="bodyline row2 bCenter" style="border-bottom: 0px;"> <table width="98%" cellpadding="0" cellspacing="0" class="bodyline row2 bCenter" style="border-bottom: 0px;">
<tr> <tr>
<th style="height: 22px; cursor: pointer;" align="left">&nbsp;'. $dbg['src'] .'&nbsp; ['. sprintf('%.4f', $dbg['time']) .' s]&nbsp; <i>'. $dbg['info'] .'</i></th> <th style="height: 22px; cursor: pointer;" align="left">&nbsp;'. $dbg['src'] .'&nbsp; ['. sprintf('%.4f', $dbg['time']) .' s]&nbsp; <i>'. $dbg['info'] .'</i></th>
<th style="height: 22px; cursor: pointer;" align="right" title="Copy to clipboard" onclick="$(\'#'. $htid .'\').CopyToClipboard();">'. "$this->db_server.$this->selected_db" .' :: Query #'. ($this->num_queries+1) .'&nbsp;</th> <th style="height: 22px; cursor: pointer;" align="right" title="Copy to clipboard" onclick="$(\'#'. $htid .'\').CopyToClipboard();">'. "[$this->engine] $this->db_server.$this->selected_db" .' :: Query #'. ($this->num_queries+1) .'&nbsp;</th>
</tr> </tr>
<tr><td colspan="2">'. $this->explain_hold .'</td></tr> <tr><td colspan="2">'. $this->explain_hold .'</td></tr>
</table> </table>
<div class="sqlLog"><div id="'. $htid .'" class="sqlLogRow sqlExplain" style="padding: 0px;">'. short_query($dbg['sql'], true) .'&nbsp;&nbsp;</div></div> <div class="sqlLog"><div id="'. $htid .'" class="sqlLogRow sqlExplain" style="padding: 0px;">'. short_query($dbg['sql'], true) .'&nbsp;&nbsp;</div></div>
<br />'; <br />';
break; break;
case 'add_explain_row': case 'add_explain_row':
if (!$html_table && $row) if (!$html_table && $row)
{ {
$html_table = true; $html_table = true;
$this->explain_hold .= '<table width="100%" cellpadding="3" cellspacing="1" class="bodyline" style="border-width: 0;"><tr>'; $this->explain_hold .= '<table width="100%" cellpadding="3" cellspacing="1" class="bodyline" style="border-width: 0;"><tr>';
foreach (array_keys($row) as $val) foreach (array_keys($row) as $val)
{ {
$this->explain_hold .= '<td class="row3 gensmall" align="center"><b>'. $val .'</b></td>'; $this->explain_hold .= '<td class="row3 gensmall" align="center"><b>'. $val .'</b></td>';
} }
$this->explain_hold .= '</tr>'; $this->explain_hold .= '</tr>';
} }
$this->explain_hold .= '<tr>'; $this->explain_hold .= '<tr>';
foreach (array_values($row) as $i => $val) foreach (array_values($row) as $i => $val)
{ {
$class = !($i % 2) ? 'row1' : 'row2'; $class = !($i % 2) ? 'row1' : 'row2';
$this->explain_hold .= '<td class="'. $class .' gen">'. str_replace(array("{$this->selected_db}.", ',', ';'), array('', ', ', ';<br />'), $val) .'</td>'; $this->explain_hold .= '<td class="'. $class .' gen">'. str_replace(array("{$this->selected_db}.", ',', ';'), array('', ', ', ';<br />'), $val) .'</td>';
} }
$this->explain_hold .= '</tr>'; $this->explain_hold .= '</tr>';
return $html_table; return $html_table;
break;
break; case 'display':
echo '<a name="explain"></a><div class="med">'. $this->explain_out .'</div>';
break;
case 'display': default:
echo '<a name="explain"></a><div class="med">'. $this->explain_out .'</div>'; die("Invalid {$this->engine} explain mode");
break; break;
} }
} }
} }

View File

@ -10,7 +10,7 @@ function get_sql_log ()
foreach ($DBS->srv as $srv_name => $db_obj) foreach ($DBS->srv as $srv_name => $db_obj)
{ {
$log .= !empty($db_obj) ? get_sql_log_html($db_obj, "$srv_name [MySQL]") : ''; $log .= !empty($db_obj) ? get_sql_log_html($db_obj, "database: $srv_name [{$db_obj->engine}]") : '';
} }
foreach ($CACHES->obj as $cache_name => $cache_obj) foreach ($CACHES->obj as $cache_name => $cache_obj)