Les ajudes a la depuració dels esquelets

SPIP propose nativament algunes funcions per ajudar al webmestre durant la fase de depuració dels esquelets.
Aquestes funcions d’informació es troben accessibles passant variables específiques al URL de la pàgina cridada.

  • Apparu en : SPIP 2.0

Els «var_mode» i «var_profile» s’utilitzen afegint o bé ?var_mode=... (ex: -titre-de-rubrique-?var_mode=...), o bé &var_mode=... (ex: spip.php?article3&var_mode=...) al URL de la pàgina cridada.
El seu ús només és funcional pels administradors registrats.

var_mode=calcul   i   var_mode=recalcul

La crida de «var_mode=calcul» regenera el codi html (llença l’execució del codi ja completat) i refresca la memòria cau (crea els fitxers html que només hauran de ser llegits durant les properes crides de la pàgina).

La crida de «var_mode=recalcul» regenera el codi php (efectua una nova compilació de l’esquelet), després regenera el codi html (llença l’execució del codi que s’acaba de compilar) i, finalment, refresca la memòria cau (crea els fitxers html que només hauran de ser llegits durant les properes crides de la pàgina).
el recàlcul de la pàgina regenera també els css i scripts javascript comprimits.
el recàlcul no s’aplica a les imatges (miniatures, imatges-tipus, ...)

Aquestes dues crides es poden llençar clicant en un dels botons d’administració;

var_mode=calcul

un primer clic cridant «var_mode=calcul» (quan el títol del botó va acompanyat d’una estrella, indica que la pàgina mostrada és llegeix des de la memòria cau);

var_mode=recalcul

un segon clic cridant «var_mode=recalcul».

Atenció: Podríeu estar temptats d’utilitzar &var_mode=recalcul en enllaços dels vostres esquelets (per forçar l’actualització del css o el javascript, per exemple). És una pràctica molt dolenta a evitar ja que consumiria recursos del servidor (re-compilació de l’esquelet).

var_mode=inclure

La crida de «var_mode=inclure» mostra el nom i el camí de cada petit fitxer o "noisette" (inclure o model) que forma la pàgina.

Això permet verificar que els inclure cridats realment per l’esquelet de la pàgina són veritablement aquells que s’hi ha especificat.

var_mode=inclure

var_profile=1

La crida de «var_profile=1» mostra el detall de les peticions sql i els temps de càlcul de cadascuna. Les peticions es classifiquen de la més exigent en temps d’execució a la més ràpida.

Aquesta funció és sobretot útil per comprendre què pot fer que una pàgina sigui excessivament lenta a l’hora de mostrar-se.
Permet visualitzar les peticions sql generades per cada bucle de l’esquelet (fins i tot els esquelets inclosos) i també les peticions fora bucle (assenyalades «Hors Compilation») generades per SPIP.

var_profile

Hi podem recollir:

  • per cada bucle
    • el número de vegades que el bucle (per tant la petició sql) s’ha executat,
    • el temps (en segons) agafat pel bucle (és a dir, el temps de la petició corresponent multiplicada pel número d’execucions del bucle),
    • la llista (classificada per ordre cronològic de totes les peticions generades per la pàgina) de cada execució de la petició (que serveix d’enllaç cap al detall de cada petició).
  • les peticions fora de bucle
  • el temps total agafat pel conjunt de peticions per la pàgina
  • el detall de cada petició efectuada amb
    • una taula estadística que mostri l’explicació de la petició,
    • el títol de la petició.
Atenció : Penseu a calcular la pàgina &var_profile=1&var_mode=calcul) per tal d’evitat que es llegeixi la memòria cau, falsejant d’aquesta manera el resultat mostrat.

var_mode=preview

La crida de «var_mode=preview» des de l’espai privat permet visualitzar a l’espai públic un article que tingui com estat «proposat per ser publicat» sense necessitar publicar-lo.

var_mode=preview

var_mode=urls

La crida de «var_mode=urls» força l’actualització de tots els urls de la pàgina.

var_mode=debug

La crida de «var_mode=debug» detalla la creació d’una pàgina (bucles spip - peticions sql - codi php - estadístiques de peticions sql).

var_mode=debug

Aquesta pàgina mostra per l’esquelet principal i també per cadascun dels esquelets inclosos

  • la llista dels valors de variables de context (#ENV) passades per l’esquelet que crida,
  • la llista de bucles.

Els diferents enllaços permeten accedir a:

  • Esquelet
    el codi text de l’esquelet (d’aquesta manera evita tenir accés al fitxer .html per llegir-ne el contingut),
    • resultat
      el codi generat específicament per aquest esquelet (excepte inclusions eventuals) que, un cop avaluat, retornarà html al navegador ,
    • codi
      el codi php generat pel compilador (anàlisi destinat més aviat als desenvolupadors experimentats) que, un cop executat, produirà el resultat (veure més amunt),
    • càlcul
      el detall de les peticions sql i, per cadascuna, els temps de càlcul (veure més amunt var_profile).
  • bucle
    el codi text del bucle complet (de <B_abc> a <//B_abc>),
    • resultat
      la petició sql generada pel bucle estudiat,
      una llista dels primers resultats retornats per aquesta petició [1],
    • codi
      el codi php (generat pel compilador) de la funció específica associada a aquest bucle (anàlisi destinat més aviat als desenvolupadors experimentats),
    • càlcul
      el detall i els temps de càlcul de la petició sql associada a aquest bucle (veure més amunt var_profile).

Visualitzar el contingut d’una taula

Una crida del URL ?page=table:nom_de_la_table des de l’espai públic mostrarà en forma de taula el contingut de la taula anomenada.
per exemple: ?page=table:articles per la taula spip_articles.

La primera línia d’aquesta taula llista els camps de la taula en ordre alfabètic (alerta: no confondre «» i «id_...»); un clic en un d’aquests camps ordenant els resultats (ascendent/descendent).

La segona línia permet efectuar una cerca sobre un valor específic d’un camp.

El conjunt de dades es mostren paginades, en grups de 10 resultats.

A tenir en comte: Aquesta funció que permet visualitzar la totalitat de les dades de totes les taules de la base de dades només pot ser utilitzada per un webmestre registrat.

Obtenir encara més informacions per la depuració

-  Desactivar la memòria cau d’SPIP afegint a config/mes_options.php:

define('_NO_CACHE', -1);

-  Activar els informes d’errors PHP afegint a config/mes_options.php:

error_reporting(E_ALL^E_NOTICE);
ini_set ("display_errors", "On");
define('SPIP_ERREUR_REPORT', E_ALL^E_NOTICE);
define('SPIP_ERREUR_REPORT_INCLUDE_PLUGINS', E_ALL^E_NOTICE);

Notes

[1és possible modificar el número de resultats mostrats aquí situant a dins del fitxer mes_options.php del directori config/ la línia : define('_MAX_DEBUG_AFF', 'n');
(per defecte, per evitar la visualització de centenars de retorns en els bucles massa genèrics, el valor «n» d’aquesta constant es fixa a 50).

Vegeu, també, els vídeos del taller dedicat a aquest tema durant les jornades 2009 a Avignon: Bug et debug: nivell 1 i Bugs et debug php : nivell 2.

Autor merce Publié le : Mis à jour : 19/09/22

Traductions : عربي, català, English, français, Nederlands, українська