Query Monitor

Descrição

O Query Monitor é o painel de ferramentas para desenvolvedores do WordPress. Ele permite a depuração de consultas ao banco de dados, erros de PHP, ganchos e ações, blocos do editor de blocos, scripts e folhas de estilo enfileirados, chamadas de API HTTP e muito mais.

Ele inclui alguns recursos avançados, como depuração de chamadas Ajax, chamadas de API REST, verificações de capacidade de usuário e suporte completo para temas de bloco e edição completa do site. Possui a capacidade de filtrar grande parte de sua saída por plugin ou tema, permitindo que você identifique rapidamente plugins, temas ou funções com desempenho insatisfatório.

O Query Monitor concentra-se fortemente em apresentar suas informações de maneira útil, por exemplo, mostrando consultas agregadas ao banco de dados agrupadas por plugins, temas ou funções responsáveis ​​por elas. Ele adiciona um menu da barra de ferramentas do administrador mostrando uma visão geral da página atual, com informações completas de depuração mostradas em painéis assim que você seleciona um item de menu.

O Query Monitor é compatível com versões do WordPress de até três anos atrás e a versão do PHP 7.4 ou superior.

Para informações completas, consulte o site do Query Monitor.

Aqui está uma visão geral do que é mostrado para cada carregamento de página:

  • Consultas ao banco de dados, incluindo notificações para consultas lentas, duplicadas ou errôneas. Permite filtragem por tipo de consulta (SELECT, UPDATE, DELETE, etc), componente responsável (plugin, tema, arquivos básicos do WordPress) e função de chamada, e fornece visualizações agregadas separadas para cada um.
  • O nome de arquivo do modelo, a hierarquia completa do modelo e os nomes de todas as partes do modelo que foram carregadas ou não carregadas (para temas de bloco e temas clássicos).
  • Erros de PHP apresentados de forma clara, juntamente com seu componente responsável e pilha de chamadas, além de um aviso visível na barra de ferramentas do administrador.
  • Uso da funcionalidades “Fazendo errado” ou “Obsoleto” no código do seu site.
  • Blocos e propriedades associadas no conteúdo do post e na edição completa do site (FSE).
  • Regras de reescrita correspondentes, strings de consulta associadas e variáveis ​​de consulta.
  • Scripts e folhas de estilo enfileirados, juntamente com suas dependências, dependentes e alertas para dependências quebradas.
  • Configurações de idioma e arquivos de tradução carregados (arquivos MO e arquivos JSON) para cada domínio de texto.
  • Solicitações de API HTTP, com código de resposta, componente responsável e tempo gasto, com alertas para solicitações com falhas ou erros.
  • Verificações de capacidade do usuário, juntamente com o resultado e quaisquer parâmetros passados para a verificação de capacidade.
  • Informações sobre o ambiente, incluindo informações detalhadas sobre o PHP, o banco de dados, o WordPress e o servidor Web.
  • Os valores de todas as funções condicionais do WordPress, como is_single(), is_home(), etc.
  • Transientes que foram atualizados.
  • Uso do switch_to_blog() e restore_current_blog() em instalações Multisite.

Além disso:

  • Sempre que ocorre um redirecionamento, o Query Monitor adiciona um cabeçalho HTTP contendo a pilha de chamadas, para que você possa usar seu inspetor HTTP favorito ou as ferramentas de desenvolvimento do navegador para rastrear o que acionou o redirecionamento.
  • A resposta de qualquer solicitação Ajax iniciada pelo jQuery na página conterá várias informações de depuração em seus cabeçalhos. Erros de PHP também são exibidos no console do desenvolvedor do navegador.
  • A resposta de uma solicitação autenticada da API REST do WordPress conterá uma visão geral das informações de desempenho e erros de PHP em seus cabeçalhos, desde que o usuário autenticado tenha permissão para visualizar a saída do Query Monitor. Uma solicitação de API REST encapsulada incluirá ainda mais informações de depuração na propriedade qm da resposta.

Por padrão, a saída do Query Monitor é mostrada apenas para administradores em instalações de site único e super administradores em instalações multisite.

Além disso, você pode definir um cookie de autenticação que permite visualizar a saída do Query Monitor quando você não estiver conectado (ou se estiver conectado como um não administrador). Consulte o painel de Configurações para detalhes.

Outros plugins

Mantenho vários outros plugins para desenvolvedores. Confira-os:

  • O User Switching oferece alternância instantânea entre contas de usuário no WordPress.
  • O WP Crontrol permite visualizar e controlar o que está acontecendo no sistema WP-Cron

Declaração de privacidade

O Query Monitor é privado por padrão e sempre será. Ele não armazena persistentemente nenhum dos dados que coleta. Não envia dados para terceiros, nem inclui recursos de terceiros.

A declaração de privacidade completa do Query Monitor pode ser encontrada aqui.

Declaração de acessibilidade

O Query Monitor tem como objetivo ser totalmente acessível a todos os seus usuários. Ele implementa as melhores práticas de acessibilidade na web, gera marcações semânticas e estruturadas, usa as APIs de acessibilidade fornecidas pelo WordPress e pelos navegadores da web quando apropriado, e é totalmente acessível via teclado.

Dito isso, o Query Monitor não está em conformidade com as diretrizes de acessibilidade de conteúdo da web (WCAG) 2.0 no nível AA, como o próprio WordPress faz. O principal problema é que a interface do usuário usa tamanhos de fonte pequenos para manter uma alta densidade de informações para usuários com visão normal. Usuários com visão reduzida ou habilidades motoras limitadas podem ter dificuldade para visualizar ou interagir com algumas áreas do Query Monitor por causa disso. Isso é algo que estou profundamente ciente e trabalho para melhorar gradualmente, mas o problema subjacente dos tamanhos de fonte pequenos persiste.

Se você encontrou ou identificou outro problema de acessibilidade no Query Monitor, abra um tópico no fórum de suporte do plugin Query Monitor e farei o possível para resolver rapidamente.

Imagens de tela

  • Menu de barra de ferramentas do administrador
  • Consultas agregadas ao banco de dados por componente
  • Verificações de capacidade
  • Consultas ao banco de dados
  • Ganchos e ações
  • Solicitações de API HTTP
  • Agregue consultas ao banco de dados chamando a função

FAQ

Esse plugin funciona com o PHP 8?

Sim, ele foi testado ativamente e está funcionando até o PHP 8.2.

Quem pode acessar a saída do Query Monitor?

Por padrão, a saída do Query Monitor é mostrada apenas para administradores em instalações de site único e super administradores em instalações multisite.

Além disso, você pode definir um cookie de autenticação que permite visualizar a saída do Query Monitor quando você não estiver conectado ou quando estiver conectado como um usuário que normalmente não pode ver a saída do Query Monitor. Consulte o painel de Configurações para mais detalhes.

O Query Monitor em si afeta o tempo de geração da página ou no uso de memória?

Resposta curta: Sim, mas só um pouco.

Resposta longa: O Query Monitor tem um pequeno impacto no tempo de geração da página porque se integra ao WordPress da mesma forma que outros plugins. O impacto é baixo; normalmente entre 10ms e 100ms, dependendo da complexidade do seu site.

O uso de memória do Query Monitor normalmente é responsável por cerca de 10% da memória total usada para gerar a página.

Posso impedir que o Query Monitor colete dados durante solicitações de longa duração?

Sim, se algo chamar do_action( 'qm/cease' ), então o Query Monitor deixará de operar pelo restante da geração da página. Ele se desvincula da coleta de mais dados, descarta todos os dados coletados até o momento e ignora a saída de suas informações.

Isso é útil para operações de longa duração que executam um número muito alto de consultas ao banco de dados, consomem muita memória ou não são de interesse do Query Monitor, por exemplo:

  • Fazendo backup ou restaurando seu site
  • Exportando uma grande quantidade de dados
  • Executando varreduras de segurança

Existem plugins complementares para o Query Monitor?

Uma lista de plugins complementares para o Query Monitor pode ser encontrada aqui.

Além disso, o Query Monitor oferece suporte transparente a complementos para o plugin Debug Bar. Se você tiver algum complemento do Debug Bar instalado, desative o Debug Bar e os complementos serão mostrados no menu do Query Monitor.

Onde posso sugerir um novo recurso ou relatar um erro?

Use o rastreador de problemas no repositório GitHub do Query Monitor, pois é mais fácil acompanhar os problemas lá do que nos fóruns de suporte do wordpress.org.

O Query Monitor está disponível no Altis?

Sim, as Ferramentas de desenvolvedor Altis são construídas com base no Query Monitor.

O Query Monitor está disponível no WordPress VIP?

Sim, mas um usuário precisa receber a capacidade view_query_monitor para ver o Query Monitor, mesmo que seja um administrador. Consulte a documentação do WordPress VIP para mais detalhes.

Estou usando várias instâncias do `wpdb`. Como faço para que minhas instâncias adicionais apareçam no Query Monitor?

Esse recurso foi removido na versão 3.12, já que era raramente usado e aumentava consideravelmente a carga de manutenção do Query Monitor. Sinta-se à vontade para continuar usando a versão 3.11 se precisar usar esse recurso.

Posso clicar nos rastreamentos de pilha para abrir o arquivo em meu editor?

Sim, você pode ativar isso no painel de Configurações.

Você aceita doações?

Estou aceitando patrocínios pelo programa GitHub Sponsors. Se você trabalha em uma agência que desenvolve com o WordPress, peça à sua empresa para patrocinar a fim de investir em sua cadeia de suprimentos. As ferramentas que mantenho provavelmente economizam tempo e dinheiro para sua empresa, e o patrocínio no GitHub agora pode ser feito em nível organizacional.

Além disso, se você gostar do plugin, adoraria que você deixasse uma avaliação. Conte a todos os seus amigos sobre ele também!

Avaliações

Leia todas as 440 avaliações

Colaboradores e desenvolvedores

“Query Monitor” é um software com código aberto. As seguintes pessoas contribuíram para este plugin.

Colaboradores

“Query Monitor” foi traduzido para 23 localizações. Agradecemos aos tradutores por suas contribuições.

Traduzir “Query Monitor” para o seu idioma.

Interessado no desenvolvimento?

Navegue pelo código, dê uma olhada no repositório SVN ou assine o registro de desenvolvimento via RSS.

Registro de alterações

3.15.0 (10 November 2023)

3.14.1 (21 October 2023)

  • Melhora a compatibilidade com o WordPress Playground

3.14.0 (18 October 2023)

  • Corrige o tratamento do número da porta ao exibir URLs para scripts e estilos
  • Melhora o tratamento do db.php ao ativar e desativar o Query Monitor em um único site dentro de uma rede multisite, e quando DISALLOW_FILE_MODS está em uso
  • Melhora a verificação da existência da barra de depuração
  • Identifica plugins de substituição como um componente específico em vez de “outros”
  • Simplifica parte da estrutura de dados usada ao registrar consultas
  • Especifica que o Query Monitor é compatível com versões do WordPress com até três anos de idade

3.13.1 (15 July 2023)

  • Evita um erro fatal se um alerta obsoleto for acionado no início do processo de inicialização
  • Evita um alerta do PHP que pode ser acionado durante determinadas solicitações da API HTTP quando o Curl não está em uso
  • Ignora o carregamento do QM durante o processo de atualização do plugin

3.13.0 (9 July 2023)

  • Adiciona um painel dedicado para “Fazendo errado” e uso de funcionalidade obsoleta
  • Permite que os dados no painel de solicitações da API HTTP sejam filtrados pelo nome do host
  • Adiciona uma coluna “Tipo” onde uma lista de ganchos pode mostrar tanto ações quanto filtros
  • Melhora vários aspectos da configuração do “Editor”
  • Aumenta a versão mínima suportada do PHP para 7.4
  • Muito obrigado a @crstauf pela maioria dos novos recursos desta versão

3.12.3 (17 May 2023)

  • Melhora a coleta de dados das partes do modelo do tema quando o plugin Gutenberg está em uso com um tema de bloco
  • Ignora a tentativa de resolver um modelo de bloco se o tema não suportar modelos de bloco
  • Remove o fallback para $EZSQL_ERROR para erros de consulta de banco de dados, pois não é possível determinar se o erro deve ser ignorado

3.12.2 (27 April 2023)

  • Adiciona a contagem total ao rodapé da tabela no painel de erros de PHP
  • Melhora o URL de destino para links que apontam para o editor do site
  • Implementa algumas melhorias visuais menores
  • Remove informações não confiáveis sobre o transporte para solicitações da API HTTP
  • Remove a saída do Query Monitor do modal de acesso provisório

3.12.1 (24 March 2023)

  • Corrige alguns links entre painéis que apontam para o painel e os subpainéis de Consultas
  • Muda para sessionStorage para os filtros de coluna da tabela selecionada para que eles não persistam entre abas ou sessões
  • Remove o prefixo “Barra de depuração:” nos menus para painéis herdados do plugin Debug Bar

3.12.0 (16 March 2023)

  • Esclarece e melhora as informações no painel de modelo quando um tema de bloco ou edição completa do site (FSE) está em uso
  • Evita alertas do PHP se um plugin de terceiros fizer alterações inesperadas nos caminhos dos arquivos de idioma
  • Implementa algumas pequenas melhorias de desempenho
  • Remove informações enganosas sobre os limites de memória do WordPress
  • Remove o suporte a várias instâncias do wpdb (consulte as perguntas frequentes para mais informações)

3.11.2 (23 February 2023)

  • Implementa várias melhorias de acessibilidade
  • Corrige um problema onde nem todos os scripts do rodapé da área administrativa eram exibidos no painel de scripts
  • Melhora a saída quando o recurso SQLite do plugin Performance Labs está em uso
  • Remove completamente a saída do QM do personalizador
  • Garante que wp-content/db.php de outro plugin não seja removido ao desativar o QM

3.11.1 (3 January 2023)

  • Evita um erro fatal no PHP 8 quando posix_getpwuid() ou posix_getgrgid() não retorna um valor esperado.

3.11.0 (30 December 2022)

  • Adiciona um novo painel “Multisite” que mostra o uso de switch_to_blog() e restore_current_blog() em instalações multisite
  • Melhora a saída exibida para blocos e partes de modelos quando temas de bloco ou edição completa do site estão em uso
  • Introduz novas classes QM_Data e QM_Component para tornar a coleta de dados mais estruturada e confiável
  • Aumenta a versão mínima suportada do PHP para 7.2
  • Melhora o desempenho dos ícones SVG
  • Remove a capacidade de ocultar completamente erros PHP silenciados
  • Evita alguns alertas obsoletos no PHP 8.2
  • Melhora o desempenho do carregador automático de classe PHP

3.10.1 (9 September 2022)

  • Evita o registro de entradas duplicadas para chamadas múltiplas para carregar o mesmo arquivo de tradução
  • Reduz a prioridade do controlador de volta para 9 para máxima compatibilidade com outros plugins que usam um manipulador de desligamento

3.10.0 (8 September 2022)

  • Adiciona informações sobre o idioma atual no painel Idiomas
  • Reduz a chance de que o Query Monitor se responsabilize por erros de PHP que não têm um rastreamento de pilha
  • Substitui o uso de dashicons por SVGs embutidos e remove a dependência de dashicons
  • Alterna para o carregamento automático de classe via Composer para reduzir o uso de memória
  • Altera a prioridade do controlador de desligamento de 0 para PHP_INT_MAX para garantir que o máximo de dados possível seja coletado
  • Melhora o estilo dos complementos da barra de depuração
  • Corrige algumas localizações errôneas de valores float na saída da API REST
  • Aumenta a versão mínima suportada do PHP para 5.6
  • Melhora vários outros aspectos

3.9.0 (15 April 2022)

  • Introduz um botão de alternância de modo escuro no painel Configurações, que substitui a constante QM_DARK_MODE
  • Evita que erros com constantes indefinidas sejam relatados no db.php
  • Adiciona um tratamento mais abrangente de valores inesperados em rastreamentos de pilha
  • Corrige o alerta do PHP “O cabeçalho não pode conter bytes NUL” ao gerar cabeçalhos

3.8.2 (7 January 2022)

  • Corrige alguns avisos obsoletos com o PHP 8.1
  • Melhora o tratamento de consultas SQL que consistem apenas de comentários MySQL

3.8.1 (2 January 2022)

  • Corrige uma incompatibilidade com versões do PHP anteriores à 7.2
  • Corrige um alerta que estava sendo acionado dentro do controlador de cabeçalho do PHP
  • Introduz o filtro qm/component_type/{$type}
  • Introduz uma constante QM_VERSION

3.8.0 (27 December 2021)

  • Introduz a capacidade de terceiros interromperem toda a coleta e saída de dados adicionais a qualquer momento, chamando do_action( 'qm/cease'), por exemplo, para evitar o esgotamento da memória durante operações de longa duração
  • Reduz a largura do item do menu da barra de ferramentas administrativas usando uma precisão decimal menor
  • Melhora as informações do painel de modelos quando um tema de bloco está em uso (para edição completa do site)
  • Melhora o desempenho e a precisão dos rastreamentos de pilha e informações de função de chamada
  • Corrige a formatação de alguns números e mensagens de erro na saída da API REST
  • Adiciona informações mais úteis quando um cache de objeto persistente ou cache de opcode não está em uso
  • Melhora a clareza nos painéis de scripts e estilos quando qualquer um dos URLs inclui um número de porta
  • Introduz o filtro qm/component_context/{$type} para complementar qm/component_name/{$type} e qm/component_dirs
  • Melhora a qualidade interna do código, a internacionalização e reduz ainda mais o uso geral de memória

3.7.1 (13 May 2021)

  • Adicione um fallback para o processamento de tempo durante as solicitações Ajax que são enviadas antes do gancho de desligamento.

3.7.0 (13 May 2021)

  • Introduzir saída de depuração em uma propriedade qm nas respostas da API REST envelopadas
  • Adicionar informações de chamada de API HTTP ao painel de visão geral
  • Não mostrar a saída do QM dentro de incorporações do WordPress, pois ninguém usa isso
  • Não tente acessar a constante QM_HIDE_SELF antes de ela ser definida
  • Processe as estatísticas relacionadas ao tempo e à memória o mais cedo possível para que os dados não fiquem muito distorcidos

3.6.8 (9 May 2021)

  • Adicionar estatística de uso de memória do WordPress ao painel de Visão geral
  • Adicionar informações de contexto de bloco ao painel Blocos
  • Corrigir o destaque de linha das células TH
  • Correção de alguns erros de redimensionamento do painel

3.6.7 (20 January 2021)

  • Implemente uma constante QM_DB_SYMLINK para evitar que o link simbólico db.php seja colocado no lugar.
  • Remove uma dependência de SAVEQUERIES no coletor de consultas.
  • Remove atributos de escopo inválidos nas células da tabela.

3.6.6 (13 January 2021)

  • Correção do PHP 8.
  • Melhora a exibição para vários valores vazios ao registrar.
  • Não exibir menus secundários até que o menu principal esteja ativo. Isso deixa o menu mais claro.
  • Detectar nomes de host locais em solicitações da API HTTP e não marcá-los como ignorando a verificação do certificado.
  • Impedir que o texto nos botões de alternância seja selecionado ao selecionar dados em tabelas.
  • Remover o suporte ao plugin de modo escuro que não é mais um modo escuro.

3.6.5 (13 November 2020)

  • Sempre mostrar o painel Registros, com um link para a documentação de ajuda.
  • Um monte de melhorias no tratamento de “estado quebrado” do QM.
  • Remover o uso de métodos obsoletos do jQuery.
  • Adicionar suporte para dependências do Altis como componentes.
  • Adicionar a variável innodb_buffer_pool_size à lista de ambientes do MySQL.
  • Pré-formatar a saída do registro
  • Corrigir a verificação da versão do PHP.

3.6.4 (20 August 2020)

  • Corrige um erro introduzido na versão 3.6.2 com o tratamento antecipado extra de erros (irônico).

3.6.3 (20 August 2020)

  • Corrigir o tamanho do ícone de fechar.

3.6.2 (20 August 2020)

  • Capturar e exibir o erro PHP mais recente que ocorreu antes do carregamento do QM.
  • Add support for the environment type added in WP 5.5.
  • Avoid a potentially blank translation for some plural forms.
  • Increase some contrast in dark mode.
  • Combine the response-related sections of the Request panel.
  • Add extra sanity checking when attempting to fetch the posix user information.

3.6.1 (25 July 2020)

  • Adjust the bottom margin when the QM panel is open so QM doesn’t cover the bottom of the page. Works more often than not.
  • Prevent QM from triggering a fatal itself if a fatal occurs before the HTML dispatcher is loaded.
  • Add an informational message to the template output when template hooks are in use.
  • Fix errors caused by missing user or group IDs when collecting environment data.
  • Add TextMate to list of supported editors.
  • Demote some cache warnings to informational messages.
  • Support passing backtrace to QM_Backtrace.

3.6.0 (8 May 2020)

  • Improvements to the UI when a fatal error occurs, including an admin toolbar warning.
  • Improvements to the UI when QM is running in “broken” mode due to missing jQuery or an unrecoverable JavaScript error.
  • Don’t display fatal errors if error display is off and the user cannot view QM.
  • Improvements to the visual appearance of the wp_die() output.
  • Simplify re-throwing a caught exception so QM doesn’t get the blame for fatal errors, eg. in the WordPress core fatal error handler.
  • Add support for logging a variable of any type in the logger, as a replacement for var dumping.
  • Don’t show a message for errors in Ajax calls that have already occurred on the main page load.
  • Don’t dispatch QM during an iframed request, eg the plugin info modal or an upgrader action.
  • Hide QM itself from various panels by default to remove noise. Can be controlled via the existing QM_HIDE_SELF configuration constant.
  • Support for the new is_favicon() conditional added in WP 5.4.
  • Fix the side panel resizing functionality.
  • Add a WP-CLI command for creating the symlink to the db file.
  • Add filters to QM_Util::get_file_dirs() and get_file_component() to allow support for non-standard plugin and theme locations.
  • Add an action that fires when QM enqueues its assets, so add-on plugins can enqueue theirs only when necessary.

3.5.2 (2 December 2019)