Carnet Wiki

trouver_le_squelette_incluant

Version 3 — February 2019 JLuc

Cette fonction

get_squelette_incluant</code>,  appelée  pendant  le  calcul  d'une  page ,  >  cherche dans la pile d'exécution PHP quel est le squelette incluant et la fonction qui a généré l'inclusion. Elle génère aussi des logs précisant les profondeurs.


<code class='php'>
function get_squelette_incluant () {
        spip_timer('get_squelette_incluant');


$stack = debug_backtrace();
        $count = count($stack);


$squelette_functions = array(
                'recuperer_page', 'recuperer_fond', 'inclure_page', 'evaluer_fond',        // contexte squelette
                'supprimer_sessions'        // pas de contexte squelette
        );
        for($i=6;
                 ($i < count($stack)) and !in_array($stack[$i]['function'], $squelette_functions);
                 $i++);
        if ($i >= count($stack)) {
                spip_log ("get_squelette_incluant n'a pas trouvé de fonction indicative du squelette contexte dans la pile php\n".print_r($stack,1), 'ERREUR_get_squelette_incluant');
                return null;
        }
        
        // Quand c'est pas supprimer_sessions, le 1er argument est le fond
        $function = $stack[$i]['function'];
        spip_log ("Trouvé à la prof $i/$count \t avec $function en ".spip_timer('get_squelette_incluant')." le squel =".$stack[$i]['args'][0], "get_squelette_incluant");


return array($function, $stack[$i]['args'][0]);
}

Exemples de logs générés :

Feb 25 23:33:26 ### Trouvé à la prof 7/13          avec inclure_page en .481 ms le squel =structure-admin
Feb 25 23:33:30 ### Trouvé à la prof 10/16          avec inclure_page en .536 ms le squel =structure-admin
Feb 25 23:36:25 ### Trouvé à la prof 7/25          avec inclure_page en .470 ms le squel =inclure/xray_marqueur_invisible
Feb 25 23:36:30 ### Trouvé à la prof 7/37          avec inclure_page en .663 ms le squel =inclure/element/article_texte
Feb 25 23:36:57 ### Trouvé à la prof 7/38          avec inclure_page en .627 ms le squel =inclure/element/article_texte
Feb 26 00:02:15 ### Trouvé à la prof 7/29          avec inclure_page en .642 ms le squel =inclure/element/article_texte