From 37f08b867cc282d0032975dbaeb34528dce5f68f Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Tue, 15 Jan 2008 08:48:05 +0000 Subject: [PATCH] =?UTF-8?q?Appel=20du=20profileur=20depuis=20le=20d=C3=A9b?= =?UTF-8?q?usqueur:=20le=20lien=20'calcul'=20d=C3=A9clenche=20la=20mesure?= =?UTF-8?q?=20SQL=20et=20le=20explain.=20Il=20est=20activable=20au=20nivea?= =?UTF-8?q?u=20de=20chaque=20de=20squelette=20et=20au=20niveau=20de=20chaq?= =?UTF-8?q?ue=20boucle.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/debug.php | 107 +++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 46 deletions(-) diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php index 4d31cb6445..ea79cb31ee 100644 --- a/ecrire/public/debug.php +++ b/ecrire/public/debug.php @@ -121,23 +121,26 @@ function chrono_requete($temps) $i++; } - $d[$hors] = $d['']; - $n[$hors] = $n['']; - $t[$hors] = $t['']; + if ($d['']) { + $d[$hors] = $d['']; + $n[$hors] = $n['']; + $t[$hors] = $t['']; + } unset($d['']); foreach ($d as $k => $v) { $d[$k] = $n[$k] . "</td><td>$k</td><td>$v</td><td>" . join('',$t[$k]); } - $titre = '<br />' . count($temps) . ' ' - . _T('icone_statistiques_visites') - . ' SQL<br />' + $titre = '<br />' + . _L('Statistiques des requêtes SQL classées par durée') + . '<br />' . "<table style='text-align: left; border: 1px solid;'><tr><td>" . join("</td></tr>\n<tr><td>", $d) - . "</td></tr>\n<tr><td></td><td>" . _T('info_total') . '</td><td>' - . $total - . "</td><td></td></tr></table>"; + . "</td></tr>\n" + . (_request('var_mode_objet') ? '' : + ("<tr><td>" . count($temps) . " </td><td> " . _T('info_total') . '</td><td>' . $total . "</td></td><td></td></tr>")) + . "</table>"; return (_DIR_RESTREINT ? '' : affiche_erreurs_page($GLOBALS['tableau_des_erreurs'])) . affiche_erreurs_page($temps, $titre); @@ -467,53 +470,33 @@ function debug_dumpfile ($texte, $fonc, $type) { echo debug_debut($fonc); if ($var_mode_affiche !== 'validation') { - $self = parametre_url($self,'var_mode', 'debug'); foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) { + $self2 = parametre_url($self,'var_mode_objet', $nom_skel); echo "<fieldset><legend>",$sourcefile," : "; - echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=squelette#$nom_skel'>"._T('squelette')."</a>"; - echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>"; - echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a></legend>"; + echo "\n<a href='$self2&var_mode_affiche=squelette#$nom_skel'>"._T('squelette')."</a>"; + echo "\n<a href='$self2&var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>"; + echo "\n<a href='$self2&var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a>"; + echo "\n<a href='", + str_replace('var_mode=','var_profile=', $self), "'>", + _L('calcul')."</a></legend>"; echo "\n<span style='display:block;float:$spip_lang_right'>"._T('zbug_profile',array('time'=>$debug_objets['profile'][$sourcefile]))."</span>"; if (is_array($contexte = $debug_objets['contexte'][$sourcefile])) echo afficher_debug_contexte($contexte); $i = 0; - $colors = array('#e0e0f0', '#f8f8ff'); $res = ""; if (is_array($debug_objets['pretty'])) - foreach ($debug_objets['pretty'] as $nom => $pretty) + foreach ($debug_objets['pretty'] as $nom => $pretty) if (substr($nom, 0, strlen($nom_skel)) == $nom_skel) { $i++; $aff = "<".$pretty.">"; if ($var_mode_objet == $nom) $aff = "<b>$aff</b>"; - $res .= "\n<tr style='background-color: " . - $colors[$i%2] . - "'><td align='right'>$i</td><td>\n" . - "<a class='debug_link_boucle' href='" . - $self . - "&var_mode_objet=" . - $nom . - "&var_mode_affiche=boucle#$nom_skel'>" . - _T('zbug_boucle') . - "</a></td><td>\n<a class='debug_link_boucle' href='" . - $self . - "&var_mode_objet=" . - $nom . - "&var_mode_affiche=resultat#$nom_skel'>" . - _T('zbug_resultat') . - "</a></td><td>\n<a class='debug_link_resultat' href='" . - $self . - "&var_mode_objet=" . - $nom . - "&var_mode_affiche=code#$nom_skel'>" . - _T('zbug_code') . - "</a></td><td>\n" . - $aff . - "</td></tr>"; + $color = $i%2 ? '#e0e0f0' : '#f8f8ff'; + $res .= debug_affiche_navig($aff, $nom_skel, $color, $self . "&var_mode_objet=" . $nom, $i); } - if ($res) echo "<table width='100%'>\n$res</table>\n"; + if ($res) echo "<table width='100%'>\n",$res,"</table>\n"; echo "</fieldset>\n"; } echo "</div>\n<a id='$fonc'></a>\n"; @@ -549,6 +532,32 @@ function debug_dumpfile ($texte, $fonc, $type) { exit; } +function debug_affiche_navig($aff, $nom_skel, $color, $self, $i) +{ + return "\n<tr style='background-color: " . + $color . + "'><td align='right'>$i</td><td>\n" . + "<a class='debug_link_boucle' href='" . + $self . + "&var_mode_affiche=boucle#$nom_skel'>" . + _T('zbug_boucle') . + "</a></td><td>\n<a class='debug_link_boucle' href='" . + $self . + "&var_mode_affiche=resultat#$nom_skel'>" . + _T('zbug_resultat') . + "</a></td><td>\n<a class='debug_link_resultat' href='" . + $self . + "&var_mode_affiche=code#$nom_skel'>" . + _T('zbug_code') . + "</a></td><td>\n<a class='debug_link_resultat' href='" . + str_replace('var_mode=','var_profile=', $self) . + "'>" . + _L('calcul') . + "</a></td><td>\n" . + $aff . + "</td></tr>"; +} + // http://doc.spip.org/@debug_affiche function debug_affiche($fonc, $tout, $objet, $affiche) { @@ -743,18 +752,24 @@ function trace_query_chrono($m1, $m2, $query, $result, $serveur='') static $tt = 0, $nb=0; global $tableau_des_temps; + $x = _request('var_mode_objet'); + if (isset($GLOBALS['debug']['aucasou'])) { + list(, $boucle, $serveur) = $GLOBALS['debug']['aucasou']; + if ($x AND !preg_match("/$boucle\$/", $x)) + return; + if ($serveur) $boucle .= " ($serveur)"; + $boucle = "<b>$boucle</b>"; + } else { + if ($x) return; + $boucle = ''; + } + list($usec, $sec) = explode(" ", $m1); list($usec2, $sec2) = explode(" ", $m2); $dt = $sec2 + $usec2 - $sec - $usec; $tt += $dt; $nb++; - if (isset($GLOBALS['debug']['aucasou'])) { - list(, $boucle, $serveur) = $GLOBALS['debug']['aucasou']; - if ($serveur) $boucle .= " ($serveur)"; - $boucle = "<b>$boucle</b>"; - } else $boucle = ''; - $q = preg_replace('/([a-z)`])\s+([A-Z])/', '$1<br />$2',$query); $e = sql_explain($query, $serveur); $r = str_replace('Resource id ','',(is_object($result)?get_class($result):$result)); -- GitLab