Search Over 18,000 FREE Plugins from the Official WordPress Plugin Directory Repository

P3 (Plugin Performance Profiler)

See which plugins are slowing down your site. This plugin creates a performance report for your site.

This plugin creates a profile of your WordPress site's plugins' performance by measuring their impact on your site's load time.  Often times, WordPress sites load slowly because of poorly configured plugins or because there are so many of them. By using the P3 plugin, you can narrow down anything causing slowness on your site.

This plugin uses the canvas element for drawing charts and requires requires Firefox, Chrome, Opera, Safari, or IE9 or later. This plugin will not work in IE8 or lower.

Author GoDaddy.com
Profile
Contributors Godaddy, StarfieldTech
Tags debug, debugging, developer, development, performance, plugin, profiler, speed
  1. p3-profiler screenshot 1

    First, profile your site. The scanner generates some traffic on your site and monitors your site's performance on the server, then shows you the results. With this information, you can decide what action to take.

  2. p3-profiler screenshot 10

    Use the advanced settings to activate debug mode, control cache busting, or lock down profiling to a set of IP addresses.

  3. p3-profiler screenshot 11

    View the debug log on the help page to help troubleshoot if P3 isn't recording properly.

  4. p3-profiler screenshot 2

    After profiling, you'll see a breakdown of relative runtime for each plugin.

  5. p3-profiler screenshot 3

    Callouts at the top give you quick information like how much load time (in seconds) is dedicated to plugins and how many database queries your site is running per page.

  6. p3-profiler screenshot 4

    The detailed timeline gives you timing information for every plugin, the theme, and the core for every page during the profile. Find out exactly what's happening on slow loading pages.

  7. p3-profiler screenshot 5

    You can toggle each series on and off to customize this timeline for your precise needs.

  8. p3-profiler screenshot 6

    The query timeline gives you the number of database queries for every page during the profile. Find out which pages generate the most database queries.

  9. p3-profiler screenshot 7

    Keep a history of your performance scans, compare your current performance with your previous performance.

  10. p3-profiler screenshot 8

    Full in-app help documentation

  11. p3-profiler screenshot 9

    Send a summary of your performance profile via e-mail. If you want to show your developer, site admin, hosting support, or a plugin developer what's going on with your site, this is good way to start the conversation.

Automatic installation

  1. Log into your WordPress admin
  2. Click Plugins
  3. Click Add New
  4. Search for P3
  5. Click Install Now under "P3 (Plugin Performance Profiler)"
  6. Activate the plugin

Manual installation:

  1. Download the plugin
  2. Extract the contents of the zip file
  3. Upload the contents of the zip file to the wp-content/plugins/ folder of your WordPress installation
  4. Then activate the Plugin from Plugins page.

1.4.1

  • Fixed a logged php notice during uninstall
  • Fixed a php notice when starting scan. props rrhobbs
  • Removed a reference to a missing stylesheet. props zorl-zorl

1.4

  • Added a Turkish translation. Thanks to Hakaner! http://hakanertr.wordpress.com/
  • Updated some UI elements to allow for longer text strings for translations
  • Refreshed UI to be 3.5.x compatible and use standard admin coloring
  • Added a 'p3_automatic_scan_urls' filter

1.3.1

  • Fixed an error when upgrading to 1.3.x from 1.1.x and skipping the 1.2.x upgrade.

1.3.0

  • Internationalized P3
  • Compatibility with WordPress 3.4.0
  • Fixed a bug with European decimalization (0,00 vs. 0.00)
  • Major refactoring for better adherence to best practices, using fewer hooks, and consuming less memory
  • Raised memory limit override to 256M so large backtraces don't kill the site
  • Added a kill switch. If P3 is causing problems, visit yoursite.com/wordpress/index.php?P3_SHUTOFF=1 to turn off P3
  • Added automatic error detection. If a page fails to load during profiling, the next page load will turn off P3 automatically
  • Removed ajax error alerts; they weren't helpful
  • Path to the profiles folder is now determined on the init hook

1.2.0

  • Remove .profiling_enabled file, store profiling flag as a WordPress option
  • Remove code that writes to .htaccess file
  • Removed fix-flag-file page, no longer necessary
  • Added a link to the "no visits recorded" message pointing to the help page
  • Bugfix - with the manual profile "I'm done" button not showing the intended scan
  • On upgrade, remove .htaccess auto_prepend_file code
  • On upgrade, delete .profiling_enabled file
  • Include a data point for all visits for all plugins on the detailed chart (If no data point exists, mark it as 0 to keep the line connected)
  • Add Debug log feature to help diagnose why scans aren't recording properly on some sites
  • Opcode optimizer detection / documentation
  • Opcode optimizer compatibility
  • Update the list of random URLs to scan - use 4 random categories, 4 random tags, 4 random posts, a random search word from the blog description, and the home page
  • Don't include the site's RSS feed in the automated scan, it's causing problems in some browsers which expect the feed to be loaded as a document
  • Support HTTP_X_REAL_IP
  • Remove file locking, it's preventing the profiles from being saved on some hosts
  • Removing calls to filter_var, some 5.2.x builds use --disable-filter so this isn't reliable
  • Bugfix - Pausing a scan and clicking "View results" showed an error message
  • Bugfix - Avoid using "../" for compatibility with open_basedir
  • Upgrade routine was being done in the wrong order

1.1.3

  • Bugfix - regression bug re-introduced in v 1.1.2. Thanks to user adamf for finding this so quickly!

1.1.2

  • Don't show screen options if there is no table
  • Show a "rate us / tweet us" box
  • Add an option to circumvent browser cache
  • Bugfix - Properly work with encrypted plugins (eval based obfuscation)
  • Bugfix - Work with suhosin/safe mode where ini_set / set_time_limit are disabled
  • Bugfix - Remove "Options -Indexes" because it's causing 500 error in some apache setups
  • Bugfix - Fix a warning with theme name detection if the theme is no longer installed

1.1.1

  • Bugfix - Plugin names with apostrophes broke the UI
  • Bugfix - Fix a deprecated warning with callt-ime pass by reference

1.1.0

  • Including plugin usage percentage / seconds in e-mail report
  • Including theme name in e-mail report. Profiles created in older versions will show "unknown"
  • Grammar / wording changes
  • Remembering "disable opcode cache" in options table
  • New option for "use my IP." If this is set, the current user's IP address will be used, if not, the stored IP pattern will be used
  • IP patterns will be stored as an option
  • Fixed: IP patterns were incorrectly escaped
  • Now displaying profile name in the top right
  • If the profile didn't record any visits (e.g. wrong IP pattern) then an error will be displayed
  • Fixing pagination on the history page
  • Made the legends on the charts a bit wider for sites with a lot of plugins and plugins with long names
  • Added the ability to toggle series on/off in the "detailed timeline" chart
  • Removed network wide activation code - each site will be "activated" when the admin logs in
  • Removed "sync all profile folders whenever a blog is added/deleted" code. Profile folders will be added when admins log in, removed when blogs are removed
  • When uninstalling, all profile folders and options will be removed
  • Using get_plugin_data() to get plugin names. If the plugin doesn't exist anymore, or there's a problem getting the plugin name, the old formatting code is used

1.0.5

  • Security - Fixed a path disclosure vulnerability
  • Security - sanitized user input before it gets back to the browser
  • Thanks to Julio Potier from Boiteaweb.fr

1.0.4

  • Bugfix - uninstalling the plugin when it hasn't been activated can result in an error message

1.0.3

  • Enforcing WordPress 3.3 requirement during activation
  • Documented warning about usort() and php bug

1.0.2

  • Fixed an error message when clicking "stop scan" too fast
  • Brought plugin version from php file in line with version from readme.txt and tag

1.0.1

  • readme.txt changes

1.0

  • Automatic site profiling
  • Manual site profiling
  • Profile history
  • Continue a profile session
  • Clear opcode caches (if possible) to improve plugin function detection
  • Limit profiling by IP address (regex pattern)
  • Limit profiling by site URL (for MS compatibility)
  • Rewrite http URLs to https to avoid SSL warnings when using wp-admin over SSL
  • Hide the admin toolbar on the front-end when profiling to prevent extra plugin scripts/styles from loading
  • In-app help / glossary page
  • Activate / deactivate hooks to try different loader methods so the profiler runs as early as possible
  • Uninstall hooks to clean up profiles
  • Hooks add/delete blog to clean up profiles
  • Send profile summary via e-mail

I installed P3, what now?

Open the Tools menu, then open P3 Plugin Profiler then click Scan Now.

What if I get a warning about usort()?

Warning messages like this: Warning: usort() [function.usort]: Array was modified by the user comparison function are due to a known php bug. See php bug #50688 for more information. This warning does not affect the functionality of your site and it is not visible to your users.

In the e-mail report, why is my theme detected as "unknown?"

Previous version of the plugin (before 1.1.0) did not have theme name detection support. If you performed a scan with a previous version, then upgraded to 1.1.0+ to view the scan, the theme name will show as "unknown."

How do I get support for P3?

We love to make P3 better. When reporting a bug, please visit this page so we can get more information: http://x.co/p3support

Thanks!

Help! I used P3 and now my site is down!

First, get your site back up! There are two ways to do this. Try the emergency shutoff switch first. If that doesn't work, delete the plugin files.

Emergency Shutoff Switch

  1. Visit yoursite.com/wordpress/index.php?P3_SHUTOFF=1

Delete the Plugin Files

  1. Delete wp-content/plugins/p3-profiler (the whole folder)
  2. Delete wp-content/mu-plugins/p3-profiler.php (if it exists)

This can happen if P3 hits the memory limit on your server while it's running. This happens most often on sites with many active plugins or a complex theme. Consider switching to the Twenty Eleven theme or deactivating a few plugins before re-running P3.

I get "Warning: file_put_contents( .... )"

Please check your media settings. This is in Settings -> Media -> Store uploads in this folder. If this folder is not set correctly, P3 won't know where to read the files.

How do I use P3 with multisite?

P3 is available on the Tools menu for each site in the network.

How can I change the list of pages scanned with auto-scan?

You can write a plugin to hook the p3_automatic_scan_urls filter. Here's some sample code:

function my_p3_auto_scan_pages() {
    return array(
        'http://example.com/',
        'http://example.com/some-cool-post',
        'http://example.com/wp-admin/edit.php',
    );
}
add_filter( 'p3_automatic_scan_urls', 'my_p3_auto_scan_pages' );
Share  
Download
Version 1.4.1

Requires WordPress version: 3.3 or higher

Compatible up to: 3.5.2

Last Updated 06 Dec 2012

Date Added: 14 Dec 2011

Plugin Homepage

Evaluation
star1
star2
star3
star4
star5

4.59 stars
249 ratings
211,792 downloads

Compatibility

Not Enough Data

Reports:
Works: 0
Broken: 1