Example #1
0
function chrono_requete($temps)
{
    $total = 0;
    $hors = "<i>" . _T('zbug_hors_compilation') . "</i>";
    $t = $q = $n = $d = array();
    // Totaliser les temps et completer le Explain
    foreach ($temps as $key => $v) {
        list($dt, $nb, $boucle, $query, $explain, $res, $contexte) = $v;
        if (is_array($contexte)) {
            $k = $contexte[0] . " {$boucle}";
            include_spip('public/compiler');
            $env = reconstruire_contexte_compil($contexte);
        } else {
            $k = $env = $boucle;
        }
        $total += $dt;
        $t[$key] = $dt;
        $q[$key] = $nb;
        $d[$k] += $dt;
        if ($k) {
            @++$n[$k];
        }
        if (!is_array($explain)) {
            $explain = array();
        }
        foreach ($explain as $j => $v) {
            $explain[$j] = "<tr><th>{$j}</th><td>" . str_replace(';', '<br />', $v) . "</td></tr>";
        }
        $e = "<table class='explain'>" . "<caption>" . $query . "</caption>" . "<tr><th>Time</th><td>{$dt}</td></tr>" . "<tr><th>Order</th><td>{$nb}</td></tr>" . "<tr><th>Res</th><td>{$res}</td></tr>" . join('', $explain) . "</table>";
        $temps[$key] = array($e, $env, $k);
    }
    // Trier par temps d'execution decroissant
    array_multisort($t, SORT_DESC, $q, $temps);
    arsort($d);
    $i = 1;
    $t = array();
    // Fabriquer les liens de navigations dans le tableau des temps
    foreach ($temps as $k => $v) {
        $titre = strip_tags($v[2]);
        $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req{$i}";
        $t[$v[2]][] = "<span class='spip-debug-arg'> " . "<a title='{$titre}' href='{$href}'>{$i}</a>" . '</span>' . (count($t[$v[2]]) % 10 == 9 ? "<br />" : '');
        $i++;
    }
    if ($d['']) {
        $d[$hors] = $d[''];
        $n[$hors] = $n[''];
        $t[$hors] = $t[''];
    }
    unset($d['']);
    // Fabriquer le tableau des liens de navigation dans le grand tableau
    foreach ($d as $k => $v) {
        $d[$k] = $n[$k] . "</td><td>{$k}</td><td class='time'>{$v}</td><td class='liste-reqs'>" . join('', $t[$k]);
    }
    $navigation = _T('zbug_statistiques') . "<table style='text-align: left; border: 1px solid;'><tr><td>" . join("</td></tr>\n<tr><td>", $d) . "</td></tr>\n" . ("<tr><td>" . count($temps) . "</td><td>" . _T('info_total') . '</td><td class="time">' . $total . "</td><td></td></tr>") . "</table>";
    return array($temps, $navigation);
}
Example #2
0
/**
 * Génère une erreur de squelette
 *
 * Génère une erreur de squelette qui sera bien visible par un
 * administrateur authentifié lors d'une visite de la page en erreur
 *
 * @param bool|string|array $message
 *     - Message d'erreur (string|array)
 *     - false pour retourner le texte des messages d'erreurs
 *     - vide pour afficher les messages d'erreurs
 * @param string|array|object $lieu
 *     Lieu d'origine de l'erreur
 * @return null|string
 *     - Rien dans la plupart des cas
 *     - string si $message à false.
**/
function erreur_squelette($message = '', $lieu = '')
{
    $debusquer = charger_fonction('debusquer', 'public');
    if (is_array($lieu)) {
        include_spip('public/compiler');
        $lieu = reconstruire_contexte_compil($lieu);
    }
    return $debusquer($message, $lieu);
}