Auxílios de depuração de templates

O SPIP oferece nativamente algumas funcionalidades para ajudar o webmaster durante a fase de depuração (ou debugagem) dos templates.
Estas funções de informação estão acessíveis ao se passar variáveis específicas ao URL da página chamada.

  • Apparu en : SPIP 2.0

Os «var_mode» e «var_profile» são ativados ao incluir-se ?var_mode=... (ex: -titulo-da-secao-?var_mode=...), ou &var_mode=... (ex: spip.php?article3&var_mode=...) ao URL da página chamada. O seu uso só funciona para os administradores logados.

var_mode=calcul e var_mode=recalcul

A chamada de «var_mode=calcul» regenera o código HTML (recompila os templates necessários caso tenham sido alterados após terem sido compilados da última vez, e inicia a execução do código compilado) e atualiza o cache (cria os ficheiros HTML, que apenas terão que ser lidos nas próximas chamadas da página).

A chamada de «var_mode=recalcul» regenera o código PHP (recompila os templates necessários para a página), e regenera o código HTML (inicia a execução do código acabado de ser compilado) e finalmente atualiza os caches (cria os ficheiros HTML, que apenas terão que ser lidos nas próximas chamadas da página). Os caches dos templates não solicitados pela página recalculada não são invalidados.

O recálculo da página regenera também os CSS e scripts Javascript comprimidos.
O recálculo não se aplica às imagens (vinhetas, imagens tipográficas, ...)

Ambas estas chamadas podem ser disparadas por um clique num dos botões de administração;

var_mode=calcul

um primeiro clique para chamar «var_mode=calcul» (quando o título do botão estiver acompanhado de um asterísco significa que a página exibida foi lida a partir do cache);

var_mode=calcul

um segundo clique para chamar «var_mode=recalcul».

Atenção: pode parecer tentador usar &var_mode=recalcul nos links dos seus templates (para forçar a atualização de CSS ou Javascript, por exemplo). É, no entanto, uma péssima prática a ser evitada pois consome desnecessariamente recursos do servidor (recompilação do template).

var_mode=images

A chamada de «var_mode=images» permite recalcular as imagens e vinhetas geradas pelos filtros gráficos na página corrente.

var_mode=inclure

A chamada de «var_mode=inclure» exibe o nome e o caminho de cada inclusão (inclure ou modelo) que compõe a página.

Permite verificar se as inclusões que estão realmente sendo chamadas pelo template são as que foram especificadas.

var_mode=inclure

var_profile=1

A chamada de «var_profile=1» exibe o detalhe das consultas SQL e os tempos de processamento de cada uma. As consultas são classificadas da mais pesada, em tempo de execução, à mais rápida.

Esta função é particularmente útil para perceber o que possa tornar a exibição de uma página excessivamente lenta. Permite visualizar as consultas SQL geradas por cada loop do template (incluindo os templates incluídos) bem como as consultas fora de loop (notadas como «Fora de compilação») geradas pelo SPIP.

var_profile

Pode-se verificar:

  • para cada loop
    • o número de vezes que o loop (e, consequentemente, a consulta SQL) foi executado,
    • o tempo (em segundos) levado pelo loop (ou seja, o tempo da consulta correspondente multiplicado pelo número de execuções do loop),
    • a lista (ordenada crinologicamente de todas as consultas geradas pela página) de cada execução da consulta (que serve de link para o detalhamento de cada consulta).
  • as consultas for de loop
  • o tempo total levado pelo conjunto de consultas para a página
  • o detalhe de cada consulta realizada com
    • uma matriz estatística exibindo a explicação da consulta,
    • o título da consulta.

Atenção :
var_profile dará resultados diferentes caso se solicite o cálculo da página ou não.
-  Considere solicitar o cálculo da página (&var_profile=1&var_mode=calcul) para obter os resultados associados ao cálculo de toda a página e suas inclusões.
-  Se não solicitar o cálculo, obterá bem menos resultados, visto que os HTML exibidos são originados de resultados presentes em cache, sem consulta à base de dados. Verá, no entanto, as consultas que permanecem ativas para todas as páginas servidas, mesmo se não for necessário nenhum cálculo.

var_mode=preview

A chamada de «var_mode=preview» a partir da área restrita permite visualizar no espaço público uma matéria com o status «proposta para publicação» sem ser necessário publicá-la.

var_mode=preview

var_mode=urls

A chamada de «var_mode=urls» força a atualização de todos os URLs da página.

var_mode=debug

A chamada de «var_mode=debug» detalha a geração de uma página (loops SPIP - consultas SQL - código PHP - estatísticas de consultas SQL).

var_mode_debug

Esta página exibe, para o template principal e para cada um dos templates incluídos

  • a lista de variáveis de contexto (#ENV) passadas pelo template inicial,
  • a lista dos loops.

Os diferentes links permitem aceder a:

  • Template
    o código em texto do template (evita ter que aceder ao ficheiro .html para consultar o seu conteúdo),
    • resultado
      o código gerado especificamente por esse template (excepto inclusões eventuais) que, uma vez avaliado, retornará o HTML ao navegador,
    • código
      o código PHP gerado pelo compilador (análise principalmente destinada aos desenvolvedores experientes) que, uma vez executado, produzirá o resultado (ver acima),
    • cálculo
      o detalhe das consultas SQL e, para cada uma, os tempos de cálculo (ver acima var_profile).
  • loop
    o código em texto do loop completo (de <B_abc> a <//B_abc>),
    • resultado
      a consulta SQL gerada pelo loop estudado,
      uma lista dos primeiro resultados retornados por essa consulta [1],
    • código
      o código PHP (gerado pelo compilador) da função específica associada a esse loop (análise principalmente destinada aos desenvolvedores experientes),
    • cálculo
      o detalhe e o tempo de cálculo da consulta SQL associada a esse loop (ver acima var_profile).

var_mode=traduction

O parâmetro var_mode=traduction permite analisar as strings de idioma usadas na página. Ao ser usado, as strings de idioma presentes na página são colocadas em destaque:

  • as stings de idioma traduzidas são sublinhadas, e uma dica de informação mostrando a fonte do ítem e o idioma de tradução é exibida no hover da string
  • as strings de idioma inexistentes piscarão em vermelho.
var_mode=traduction

Desbloquear o SVP

Há dois var_mode utilizáveis no SVP (na página de gestão dos plugins) :

-  var_mode=vider_paquets_locaux requer ao SVP forçar um recálculo das suas informações na base sobre os plugins locais, como (plugins/, plugins-dist/).

-  var_mode=reinstaller_svp é ainda mas radical: desinstala o SVP (será reinstalado na próxima execução).

Assim, se houver um problema de leitura pelo SVP, o primeiro deverá corrigí-lo (pode ocorrer em casos muito raros, mas normalmente não deverá ser necessário). O segundo, evidentemente, precisa que se reconfigure o SVP em seguida (depósitos de plugins & conf caso tenha sido alterado…)

Página em branco?!

Certos erros de PHP podem provocar uma página em branco na parte pública ou na área restrita do seu site.

Neste caso, você deve incluir o código a seguir em O ficheiro mes_options.php :

// Ativar os relatórios de erro no PHP
error_reporting(E_ALL^E_NOTICE);
ini_set ("display_errors", "On");

// Exibir todos os erros no SPIP
define('SPIP_ERREUR_REPORT', E_ALL);

… e, em seguida, recarregar a sua página. Ela deverá, então, exibir uma mensagem de erro do PHP, indicando a causa exatado problema.

Importante: se se tratar de um site em produção, deverá excluir essas linhas, uma vez que o problema esteja resolvido.

Ou também, para simplesmente registar os erros em /tmp/log/php.log sem os exibir, inclua o código abaixo em O ficheiro mes_options.php :

ini_set("log_errors", 1);
ini_set("error_log", $_SERVER['DOCUMENT_ROOT'] . '/tmp/log/php.log');

Obter informações mais completas para a depuração

Eis algumas opções úteis à depuração que poderá ativar em O ficheiro mes_options.php:

Nome da constanteValoresDescrição
_NO_CACHE -1,0,1 Desativar o cache
_INTERDIRE_COMPACTE_HEAD_ECRIRE false,true Desativar os caches CSS e Javascript
SPIP_ERREUR_REPORT E_ALL Exibir todos os erros no SPIP
$GLOBALS [’taille_des_logs’] valeur en kb Tamanho dos logs
_MAX_LOG nombre de lignes Limita o tamanho dos logs em n linhas
_LOG_FILELINE false,true Incluir nos logs o ficheiro, a linha e o nome da função que gerou o log
_LOG_FILTRE_GRAVITE 1 a 8 Verbosidade dos logs
_DEBUG_SLOW_QUERIES false/true Log SQL
_BOUCLE_PROFILER valor em ms Acompanhar os logs que requerem mais de n ms

- Desativar o cache do SPIP

define('_NO_CACHE', -1);

ou clicar no botão: "Desativar temporariamente o cache"

- Desativar os caches CSS e Javascript (ficheiros encontram-se em local/cache-js/ e local/cache-css/

define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);


-  Ativar os relatórios de erros PHP

error_reporting(E_ALL^E_NOTICE);
ini_set ("display_errors", "On");

-  Exibir todos os erros no SPIP

define('SPIP_ERREUR_REPORT',E_ALL);

-  Aumentar o tamanho dos logs para 500 kb

$GLOBALS['taille_des_logs'] = 500;

-  Limitar o tamanho dos logs a 500000 linhas

define('_MAX_LOG', 500000);

-  Incluir nos los o ficheiro, a linha e o nome da função que gerou o log.

define('_LOG_FILELINE',true);

-  Ativar todos os logs

define('_LOG_FILTRE_GRAVITE',8);

-  Indicar nos logs do MySQL (log/mysql-slow.log) o URL correspondente às consultas «lentas»:

define('_DEBUG_SLOW_QUERIES', true);

-  Acompanhar os loops que executam por mais de 5 segundos (5000 ms)

define('_BOUCLE_PROFILER', 5000);

 


Em resumo, para usar UNICAMENTE num site em DESENVOLVIMENTO, pode copiar/colar tudo abaixo em O ficheiro mes_options.php:

define('_NO_CACHE', -1);
define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);
error_reporting(E_ALL^E_NOTICE);
ini_set ("display_errors", "On");
define('SPIP_ERREUR_REPORT',E_ALL);
$GLOBALS['taille_des_logs'] = 500;
define('_MAX_LOG', 500000);
define('_LOG_FILELINE',true);
define('_LOG_FILTRE_GRAVITE',8);
define('_DEBUG_SLOW_QUERIES', true);
define('_BOUCLE_PROFILER', 5000);

Notas

[1é possível alterar o número de resuldatos exibidos aqui, inserindo no ficheiro mes_options.php do diretório config/ a linha: define('_MAX_DEBUG_AFF', 'n');
(por padrão, para evitar a exibição de rentenas de retornos de loops muito genéricos, o valor «n» dessa constante está definido como 50).

Ver também:

Autor Ricardo Porto Publié le :

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