From 07e7b7a8cf8a8618e31416787ca329c1b2df922d Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Wed, 6 Jun 2007 16:28:23 +0000 Subject: [PATCH] =?UTF-8?q?Un=20petit=20visualiseur=20des=20temps=20de=20c?= =?UTF-8?q?alculs=20des=20requetes=20SQL.=20Existait=20en=20fait=20depuis?= =?UTF-8?q?=20longtemps=20mais=20n'avait=20pas=20suivi=20la=20nouvelle=20m?= =?UTF-8?q?ise=20en=20page=20et=20=C3=A9tait=20du=20coup=20illible.=20C'es?= =?UTF-8?q?t=20=C3=A0=20pr=C3=A9sent=20le=20cas=20pour=20l'espace=20public?= =?UTF-8?q?,=20pour=20l'espace=20priv=C3=A9=20il=20y=20a=20un=20conflit=20?= =?UTF-8?q?d'opacit=C3=A9=20dans=20les=20feuilles=20de=20style=20qu'il=20f?= =?UTF-8?q?aut=20tirer=20au=20clair=20(ou=20plutot=20au=20fonc=C3=A9).=20E?= =?UTF-8?q?n=20prime,=20il=20classe=20par=20dur=C3=A9e=20d=C3=A9croissante?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/base/db_mysql.php | 4 +++- ecrire/index.php | 6 ++++++ ecrire/public.php | 10 +++++++--- ecrire/public/debug.php | 19 +++++++++++++++---- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/ecrire/base/db_mysql.php b/ecrire/base/db_mysql.php index e9d8599550..9c1637f4ae 100644 --- a/ecrire/base/db_mysql.php +++ b/ecrire/base/db_mysql.php @@ -105,11 +105,13 @@ function spip_mysql_trace($query, $start, $result) function spip_mysql_timing($m1, $m2, $query, $result) { static $tt = 0; + global $tableau_des_temps; + list($usec, $sec) = explode(" ", $m1); list($usec2, $sec2) = explode(" ", $m2); $dt = $sec2 + $usec2 - $sec - $usec; $tt += $dt; - echo "<small>", htmlentities($query), " -> <span style='color: blue'>", sprintf("%3f", $dt),"</span> (", $tt, ")</small> $result<p>\n"; + $tableau_des_temps[] = array(sprintf("%3f", $dt), "$query -> $result"); } // fonction appelant la precedente specifiquement pour l'espace public diff --git a/ecrire/index.php b/ecrire/index.php index b6c27faa26..1fab08e721 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -170,4 +170,10 @@ $var_f = charger_fonction($exec); // Z'y va $var_f(); + +// avec &var_profile=1 on a le tableau de mesures SQL +if (count($tableau_des_temps)) { + include_spip('public/debug'); + chrono_requete($tableau_des_temps); +} ?> diff --git a/ecrire/public.php b/ecrire/public.php index 0c04b1c59a..1f1a0a3466 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -112,7 +112,7 @@ if (defined('_INC_PUBLIC')) { // Aller chercher la page // - $tableau_des_erreurs = array(); + $tableau_des_erreurs = $tableau_des_temps = array(); $assembler = charger_fonction('assembler', 'public'); $page = $assembler($fond); @@ -211,8 +211,7 @@ if (defined('_INC_PUBLIC')) { } } - if($html) - $page = analyse_js_ajoutee($page); + if ($html) $page = analyse_js_ajoutee($page); // Passer la main au debuggueur le cas echeant if ($var_mode == 'debug') { @@ -237,6 +236,11 @@ if (defined('_INC_PUBLIC')) { // cf. public/assembler.php) echo pipeline('affichage_final', $page['texte']); + if (count($tableau_des_temps) AND $affiche_boutons_admin) { + include_spip('public/debug'); + chrono_requete($tableau_des_temps); + } + // Gestion des statistiques du site public if (($GLOBALS['meta']["activer_statistiques"] != "non") AND $spip_compter_visites!='non') { diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php index 7e4cab5a6a..32974d4a65 100644 --- a/ecrire/public/debug.php +++ b/ecrire/public/debug.php @@ -45,7 +45,7 @@ function afficher_debug_contexte($env) { // et en mode validation (fausse erreur "double occurrence insert_head") // ajouter &var_mode=debug pour voir les erreurs et en parler sur spip@rezo.net // http://doc.spip.org/@affiche_erreurs_page -function affiche_erreurs_page($tableau_des_erreurs) { +function affiche_erreurs_page($tableau_des_erreurs, $message='') { if ($GLOBALS['exec']=='valider_xml') return ''; $GLOBALS['bouton_admin_debug'] = true; @@ -54,10 +54,10 @@ function affiche_erreurs_page($tableau_des_erreurs) { $res .= "<li>" .$err[0] . ", <small>".$err[1]."</small><br /></li>\n"; } return "\n<div id='spip-debug' style='" - . "position: absolute; top: 20px; left: 20px; z-index: 1000;" - . "filter:alpha(opacity=60); -moz-opacity:0.6; opacity: 0.6;" + . "position: absolute; top: 90px; left: 10px; z-index: 1000;" + . "filter:alpha(opacity=95); -moz-opacity:0.9; opacity: 0.95;" . "'><ul><li>" - . _T('zbug_erreur_squelette') + . ($message ? $message : _T('zbug_erreur_squelette')) ## aide locale courte a ecrire, avec lien vers une grosse page de documentation # aide('erreur_compilation'), . "<br /></li>" @@ -66,6 +66,17 @@ function affiche_erreurs_page($tableau_des_erreurs) { . "</ul></ul></div>"; } +function chrono_requete($tableau_des_temps) +{ + foreach ($tableau_des_temps as $key => $row) { + $t[$key] = $row[0]; + $q[$key] = $row[1]; + } + array_multisort($t, SORT_DESC, $q, $tableau_des_temps); + echo affiche_erreurs_page($tableau_des_temps, + _T('zbug_profile', array('time'=>''))); +} + // // Si une boucle cree des soucis, on peut afficher la requete fautive // avec son code d'erreur -- GitLab