Log Slow Page Loads
Writes a line to the PHP error log for every request that takes longer than a set number of seconds, with the URL, time, memory and query count.
Opens WPIDE on
Code
add_action( 'shutdown', function () {
$threshold = 2.0; // Seconds.
$time = timer_float();
if ( $time < $threshold ) {
return;
}
$uri = isset( $_SERVER['REQUEST_URI'] ) ? esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : ( defined( 'WP_CLI' ) ? 'wp-cli' : '' );
error_log( sprintf( '[slow request] %.2fs | %s | %s | %d queries | %s', $time, isset( $_SERVER['REQUEST_METHOD'] ) ? sanitize_key( $_SERVER['REQUEST_METHOD'] ) : 'cli', $uri, get_num_queries(), size_format( memory_get_peak_usage( true ) ) ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions
}, 999 );
Notes
Change $threshold. Enable WP_DEBUG_LOG or check your server's PHP error log to read the entries.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.