Skip to content
Extraits de code Groupes Projets
Valider 07e7b7a8 rédigé par esj's avatar esj
Parcourir les fichiers

Un petit visualiseur des temps de calculs des requetes SQL. Existait en fait...

Un petit visualiseur des temps de calculs des requetes SQL. Existait en fait depuis longtemps mais n'avait pas suivi la nouvelle mise en page et était du coup illible. C'est à présent le cas pour l'espace public, pour l'espace privé il y a un conflit d'opacité dans les feuilles de style qu'il faut tirer au clair (ou plutot au foncé). En prime, il classe par durée décroissante.
parent f6103115
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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);
}
?>
......@@ -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') {
......
......@@ -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
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter