Query Monitor – 查询监控器

描述

Query Monitor 是 WordPress 的开发人员工具面板。它可以调试数据库查询、PHP 错误、挂钩和操作、块编辑器块、排队脚本和样式表、HTTP API 调用等。

它包括一些高级功能,例如 Ajax 调用调试、REST API 调用、用户能力检查以及对块主题和完整站点编辑的完全支持。它包括通过插件或主题缩小大部分输出范围的能力,使您可以快速确定性能不佳的插件、主题或功能。

查询监视器重点关注以有用的方式呈现其信息,例如通过显示按负责它们的插件、主题或函数分组的聚合数据库查询。它添加了一个管理工具栏菜单,显示当前页面的概述,一旦您选择菜单项,面板中就会显示完整的调试信息。

Query Monitor 支持最多三年前的 WordPress 版本以及 PHP 7.4 或更高版本。

有关完整信息,请参阅Query Monitor 网站

以下是每个页面加载所显示内容的概述:

  • 数据库查询,包括缓慢、重复或错误查询的通知。允许按查询类型(SELECTUPDATEDELETE 等)、负责组件(插件、主题、WordPress 核心)和调用函数进行过滤,并为每个提供单独的聚合视图。
  • 模板文件名、完整的模板层次结构以及已加载或未加载的所有模板部分的名称(对于块主题和经典主题)。
  • PHP 错误及其负责的组件和调用堆栈以及管理工具栏中的可见警告都很好地呈现。
  • 在您网站的代码中使用“做错了”或“已弃用”功能。
  • 帖子内容和完整站点编辑 (FSE) 中的块和关联属性。
  • 匹配的重写规则、关联的查询字符串和查询变量。
  • 排队的脚本和样式表,以及它们的依赖项、依赖项以及损坏的依赖项的警报。
  • 每个文本域的语言设置和加载的翻译文件(MO 文件和 JSON 文件)。
  • HTTP API 请求,包含响应代码、负责的组件和所用时间,以及失败或错误请求的警报。
  • 用户能力检查,以及结果和传递给能力检查的任何参数。
  • 环境信息,包括有关 PHP、数据库、WordPress 和 Web 服务器的详细信息。
  • 所有 WordPress 条件函数的值,例如 is_single()is_home() 等。
  • 已更新的瞬态。
  • 在多站点安装中使用 switch_to_blog()restore_current_blog()

此外:

  • 每当发生重定向时,查询监视器都会添加一个包含调用堆栈的 HTTP 标头,因此您可以使用您最喜欢的 HTTP 检查器或浏览器开发人员工具来跟踪触发重定向的内容。
  • 页面上任何 jQuery 发起的 Ajax 请求的响应都将在其标头中包含各种调试信息。 PHP 错误也会输出到浏览器的开发人员控制台。
  • 只要经过身份验证的用户有权查看查询监视器的输出,来自经过身份验证的 WordPress REST API 请求的响应将在其标头中包含性能信息和 PHP 错误的概述。 封装的 REST API 请求将包含更多调试响应的 qm 属性中的信息。

默认情况下,查询监视器的输出仅向单站点安装的管理员显示,对于多站点安装的超级管理员显示。

除此之外,您还可以设置一个身份验证 cookie,允许您在未登录时(或者以非管理员身份登录)查看查询监视器输出。有关详细信息,请参阅“设置”面板。

其它插件

我为开发人员维护了几个其他插件。去看一下:

  • 用户切换提供 WordPress 中用户帐户之间的即时切换。
  • WP Crontrol 可让您查看和控制 WP-Cron 系统中发生的情况

隐私声明

查询监视器默认是私有的,并且永远都是私有的。它不会持久存储其收集的任何数据。它不向任何第三方发送数据,也不包含任何第三方资源。

可以在此处找到 Query Monitor 的完整隐私声明

无障碍声明

Query Monitor 的目标是让所有用户都能完全访问。它实现了 Web 可访问性的最佳实践,输出语义和结构化标记,在适当的情况下使用 WordPress 和 Web 浏览器提供的可访问性 API,并且可以通过键盘完全访问。

也就是说,Query Monitor 并不像 WordPress 本身那样符合 AA 级 Web 内容可访问性指南 (WCAG) 2.0。主要问题是用户界面使用小字体来为视力正常的用户保持高信息密度。因此,视力不佳或运动技能较差的用户可能难以查看查询监视器的某些区域或与之交互。这是我敏锐地意识到的事情,并且正在努力逐步改进,但小字体大小的根本问题仍然存在。

如果您在 Query Monitor 中遇到或发现其他辅助功能问题,请在Query Monitor 插件支持论坛 我会尽力迅速解决这个问题。

屏幕截图

  • 管理工具栏菜单
  • 按组件聚合数据库查询
  • 能力检查
  • 数据库查询
  • 勾子和动作
  • HTTP API 请求
  • 通过调用函数聚合数据库查询

常见问题

这个插件可以在 PHP 8 上使用吗?

是的,它经过积极测试,最高可达 PHP 8.2。

谁可以访问查询监视器的输出?

默认情况下,查询监视器的输出仅向单站点安装的管理员显示,对于多站点安装的超级管理员显示。

除此之外,您还可以设置一个身份验证 cookie,该 cookie 允许您在未登录时或以通常无法查看查询监视器输出的用户身份登录时查看查询监视器输出。有关详细信息,请参阅“设置”面板。

查询监视器本身是否会影响页面生成时间或内存使用情况?

简短的回答:是的,但只有一点点。

长答案:查询监视器对页面生成时间的影响很小,因为它以与其他插件相同的方式挂接到 WordPress。影响较小;通常在 10 毫秒到 100 毫秒之间,具体取决于站点的复杂性。

查询监视器的内存使用量通常占用于生成页面的总内存的 10% 左右。

我可以阻止查询监视器在长时间运行的请求期间收集数据吗?

是的,如果有任何内容调用 do_action( 'qm/cease' ),那么查询监视器将停止在页面生成的剩余时间内运行。它使自己脱离进一步的数据收集,丢弃迄今为止收集的所有数据,并跳过其信息的输出。

这对于执行大量数据库查询、消耗大量内存或查询监视器不关心的长时间运行操作非常有用,例如:

  • 备份或恢复您的网站
  • 导出大量数据
  • 运行安全扫描

查询监视器有任何附加插件吗?

可以在此处找到查询监视器的附加插件列表。

此外,查询监视器透明地支持调试栏插件的附加组件。如果您安装了任何调试栏附加组件,请停用调试栏,附加组件将显示在查询监视器的菜单中。

我可以在哪里建议新功能或报告错误?

请使用Query Monitor 的 GitHub 存储库上的问题跟踪器,因为在那里跟踪问题比在wordpress.org 支持论坛。

Altis 上可以使用查询监视器吗?

是的,Altis 开发人员工具构建在查询监视器之上。

WordPress VIP 上可以使用查询监视器吗?

可以,但用户需要被授予 view_query_monitor 功能才能查看查询监视器,即使他们是管理员也是如此。 有关更多详细信息,请参阅 WordPress VIP 文档

我正在使用“wpdb”的多个实例。如何让我的其他实例显示在查询监视器中?

该功能在 3.12 版本中被删除,因为它很少使用,并且大大增加了 Query Monitor 本身的维护负担。如果您需要使用此功能,请随意继续使用版本 3.11。

我可以单击堆栈跟踪以在编辑器中打开文件吗?

是的。您可以在“设置”面板上启用此功能。

你们接受捐款吗?

我正在通过 GitHub 赞助商计划接受赞助. 如果您在一家使用 WordPress 开发的机构工作,请要求您的公司提供赞助以投资其供应链。我维护的工具可能会节省您公司的时间和金钱,并且 GitHub 赞助现在可以在组织级别完成。

此外,如果您喜欢该插件,那么我希望您留下评论。也告诉你所有的朋友吧!

评价

阅读所有440条评价

贡献者及开发者

“Query Monitor – 查询监控器” 是开源软件。 以下人员对此插件做出了贡献。

贡献者

「Query Monitor – 查询监控器」插件已被翻译至 23 种本地化语言。 感谢所有译者为本插件所做的贡献。

将“Query Monitor – 查询监控器”翻译成您的语言。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

3.15.0 (10 November 2023)

3.14.1 (21 October 2023)

  • 提高了与 WordPress Playground 的兼容性

3.14.0 (18 October 2023)

  • 更正了显示脚本和样式的 URL 时的端口号处理
  • 改进了在多站点网络中的单个站点上激活和停用查询监视器以及使用 DISALLOW_FILE_MODS 时的 db.php 处理
  • 改进了对调试栏是否存在的检查
  • 将嵌入式插件标识为特定组件而不是“其他”
  • 简化记录查询时使用的一些数据结构
  • 指定 Query Monitor 支持最多三年前的 WordPress 版本

3.13.1 (15 July 2023)

  • Avoids a fatal error if a deprecated warning is triggered early on during the bootstrap process
  • Avoids a PHP warning that can be triggered during certain HTTP API requests when Curl is not in use
  • Skips loading QM during the plugin update process

3.13.0 (9 July 2023)

  • Adds a dedicated panel for “Doing it Wrong” and deprecated functionality usage
  • Allows data in the HTTP API requests panel to be filtered by host name
  • Adds a “Type” column wherever a list of hooks can show both actions and filters
  • Improves various aspects of the “Editor” setting
  • Increases the minimum supported version of PHP to 7.4
  • Many thanks to @crstauf for the majority of the new features in this release

3.12.3 (17 May 2023)

  • Improves theme template part data collection when the Gutenberg plugin is in use with a block theme
  • Skips attempting to resolve a block template if the theme doesn’t support block templates
  • Removes the fallback to $EZSQL_ERROR for database query errors as it’s not possible to determine if the error should be ignored

3.12.2 (27 April 2023)

  • Adds the total count to the table footer of the PHP Errors panel
  • Improves the destination URL for links that point to the site editor
  • Implements some minor visual improvements
  • Removes unreliable information about the transport for HTTP API requests
  • Removes Query Monitor output from the interim login modal

3.12.1 (24 March 2023)

  • Corrects some inter-panel links that point to the Queries panel and sub-panels
  • Switches to sessionStorage for the selected table column filters so they don’t persist across tabs or sessions
  • Removes the “Debug Bar:” prefix on the menus for panels inherited from the Debug Bar plugin

3.12.0 (16 March 2023)

  • Clarifies and improves information in the Template panel when a block theme or full site editing (FSE) is in use
  • Avoids PHP warnings if a third party plugin makes unexpected changes to language file paths
  • Implements some minor performance improvements
  • Removes misleading information about WordPress memory limits
  • Removes support for multiple instances of wpdb (see the FAQ for more information)

3.11.2 (23 February 2023)

  • Implements various accessibility improvements
  • Fixes an issue where not all admin area footer scripts were shown in the Scripts panel
  • Improves output when the SQLite feature in the Performance Labs plugin is in use
  • Removes QM output altogether from the Customizer
  • Ensures wp-content/db.php from another plugin doesn’t get removed when deactivating QM

3.11.1 (3 January 2023)

  • Avoids a fatal error in PHP 8 when posix_getpwuid() or posix_getgrgid() doesn’t return an expected value.

3.11.0 (30 December 2022)

  • Adds a new “Multisite” panel that shows usage of switch_to_blog() and restore_current_blog() on Multisite installations
  • Improves the output shown for blocks and template parts when block themes or full site editing is in use
  • Introduces new QM_Data and QM_Component classes to make the data collection more structured and reliable
  • Increases the minimum supported version of PHP to 7.2
  • Improves the performance of SVG icons
  • Removes the ability to completely hide silenced PHP errors
  • Avoids some deprecated notices in PHP 8.2
  • Improves the performance of the PHP class autoloader

3.10.1 (9 September 2022)

  • Prevents logging duplicate entries for multiple calls to load the same translation file
  • Brings the dispatcher priority back down to 9 for maximum compatibility with other plugins that use a shutdown handler

3.10.0 (8 September 2022)

  • Adds information about the current language on the Languages panel
  • Reduces the chance that Query Monitor blames itself for PHP errors that don’t have a stack trace
  • Replaces the use of Dashicons with inline SVGs and removes the dashicons dependency
  • Switches to class autoloading via Composer for reduced memory usage
  • Changes the priority of the shutdown dispatcher from 0 to PHP_INT_MAX to ensure as much data as possible is collected
  • Improves the styling of Debug Bar add-ons
  • Fixes some erroneous localisation of float values in REST API output
  • Bumps the minimum supported PHP version to 5.6
  • Improves various other bits and bobs

3.9.0 (15 April 2022)

  • Introduces a dark mode toggle on the Settings panel, which replaces the QM_DARK_MODE constant
  • Prevents errors with undefined constants being reported in db.php
  • Adds more comprehensive handling of unexpected values in stack traces
  • Fixes PHP Warning ‘Header may not contain NUL bytes’ when outputting headers

3.8.2 (7 January 2022)

  • Fixes some deprecated notices with PHP 8.1
  • Improves the handling of SQL queries that consist only of MySQL comments

3.8.1 (2 January 2022)

  • Fixes an incompatibility with PHP versions prior to 7.2
  • Fixes a warning that was being triggered within the PHP header dispatcher
  • Introduces the qm/component_type/{$type} filter
  • Introduces a QM_VERSION constant

3.8.0 (27 December 2021)

  • Introduces the ability for a third party to cease all further data collection and output at any point by calling do_action( 'qm/cease' ), for example to prevent memory exhaustion during long-running operations
  • Reduces the width of the admin toolbar menu item by using lower decimal precision
  • Improves the Template panel information when a block theme is in use (for Full Site Editing)
  • Improves the performance and accuracy of stack traces and calling function information
  • Corrects some formatting of numbers and error messages in the REST API output
  • Adds more useful information when a persistent object cache or opcode cache isn’t in use
  • Improves clarity in the Scripts and Styles panels when any of the URLs include a port number
  • Introduces the qm/component_context/{$type} filter to complement qm/component_name/{$type} and qm/component_dirs
  • Improves internal code quality, internationalisation, and further reduces overall memory usage

3.7.1 (13 May 2021)

  • Add a fallback for timing processing during Ajax requests that are dispatched before the shutdown hook.

3.7.0 (13 May 2021)

3.6.8 (9 May 2021)

  • Add WordPress memory usage statistic to Overview panel
  • Add block context information to the Blocks panel
  • Fix row highlighting of TH cells
  • Fix some panel resizing bugs

3.6.7 (20 January 2021)

  • Implement a QM_DB_SYMLINK constant to prevent the db.php symlink being put into place.
  • Remove a dependency on SAVEQUERIES in the query collector.
  • Remove invalid scope attributes on table cells.

3.6.6 (13 January 2021)

  • PHP 8 fix.
  • Improve the display for various empty values when logging.
  • Don’t display child menus until the parent menu is active. Makes the menu clearer.
  • Detect local host names in HTTP API requests and don’t mark them as ignoring certificate verification.
  • Prevent the text in toggle buttons from being selected when selecting data in tables.
  • Remove support for the Dark Mode plugin which isn’t Dark Mode any more.

3.6.5 (13 November 2020)

  • Always show the Logs panel, with a link to help docs.
  • Whole bunch of improvements to QM’s “broken” state handling.
  • Remove usage of deprecated jQuery methods.
  • Add support for Altis dependencies as components.
  • Add innodb_buffer_pool_size variable to the mysql environment list.
  • Preformat the Logger output
  • Fix the PHP version check.

3.6.4 (20 August 2020)

  • Correct an error introduced in 3.6.2 with the extra early error handling (ironic).

3.6.3 (20 August 2020)

  • Correct the size of the close icon.

3.6.2 (20 August 2020)

  • Capture and display the most recent PHP error that occurred before QM loaded.
  • 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)