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