PluginProbe
Code Profiler – WordPress Performance Profiling and Debugging Made Easy / 1.9.6
Code Profiler – WordPress Performance Profiling and Debugging Made Easy v1.9.6
1.9.6 1.9.5 1.9.4 1.9.3 trunk 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.6 1.6.1 1.6.10 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 All 41 releases
← All changes | readme.txt +183 -26 1.5.51.9.6 View file →
@@ -1,10 +1,10 @@
1 1 === Code Profiler - WordPress Performance Profiling and Debugging Made Easy ===
2 2 Contributors: bruandet, nintechnet
3 -Tags: profiler, debug, optimize, performance, seo, benchmark, statistics, debugging, speed, profiling
3 +Tags: profiler, debug, optimize, performance, benchmark
4 4 Requires at least: 5.0
5 -Tested up to: 6.2
6 -Stable tag: 1.5.5
5 +Tested up to: 7.1
6 +Stable tag: 1.9.6
7 7 License: GPLv3 or later
8 8 Requires PHP: 7.1
9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html
10 10
@@ -15,9 +15,9 @@
15 15 = A profiler to measure the performance of your WordPress plugins and themes. =
16 16
17 17 Code Profiler helps you to measure the performance of your plugins and themes at the PHP level and to quickly find any potential problem in your WordPress installation.
18 18
19 -You can profile the frontend and backend of WordPress, a custom URL, or even send a POST payload and custom cookies to profile a contact form, a checkout process or an AJAX action among many other possibilities.
19 +You can profile the frontend and backend of WordPress, as well a cron events, a custom URL, send a POST payload, custom cookies and HTTP headers to profile a contact form, a checkout process or an AJAX action among many other possibilities.
20 20
21 21 It generates an extremely detailed and easy to read analysis in the form of charts and tables that shows not only which plugin or theme, but also which PHP script, class, method and function is slowing down your website. It displays many useful additional information such as database queries, file I/O operations and disk I/O usage as well.
22 22
23 23 It makes it very simple to locate any bottleneck problem in your themes or plugins in order to solve it and speed up your website.
@@ -32,18 +32,19 @@
32 32 * Plugins & themes performance profiling.
33 33 * [Pro] Scripts performance profiling.
34 34 * [Pro] Methods & functions performance profiling.
35 35 * [Pro] Database queries performance.
36 +* [Pro] Remote connections monitoring.
36 37 * [Pro] File I/O operations monitoring.
37 38 * File I/O statistics.
38 39 * Disk I/O monitoring.
39 40 * WP-CLI integration.
40 41 * Export charts in PNG image format.
41 -* GET/POST methods, custom cookies.
42 +* GET/POST methods, custom cookies and HTTP headers.
42 43 * [Pro] Export all tables and charts in CSV file format.
43 44 * [Pro] Filtering options
44 45
45 -Learn more about [Code Profiler Pro](https://code-profiler.com/).
46 +Learn more about [Code Profiler Pro](https://nintechnet.com/codeprofiler/).
46 47
47 48 == Frequently Asked Questions ==
48 49
49 50 = What are the differences between Code Profiler and services such as Google PageSpeed or GTmetrix? =
@@ -49,33 +50,15 @@
49 50 = What are the differences between Code Profiler and services such as Google PageSpeed or GTmetrix? =
50 51
51 52 They are completely different: Code Profiler analyzes the code performance of your plugins and themes on your server, at the PHP level. Google PageSpeed and GTmetrix, instead, analyze the content of a web page from a browser's perspective.
52 53
53 -= Will Code Profiler work if I have a caching plugin or a PHP opcode cache, or if my website is using a CDN service? =
54 -
55 -In most cases, Code Profiler will be able to bypass caching from plugins and CDN services, as well as your PHP opcode cache. If there were a problem, it would warn you about it.
56 -
57 -= Why do I see numbers such as "3E-06" or "1.2E-05" after opening the CSV file with my spreadsheet editor? =
58 -
59 -Spreadsheet editors such as LibreOffice Calc and Microsoft Excel can use scientific exponential notation to display very small numbers, for instance, 0.000025 will become 2.5e-5. Select the whole column of numbers and, in the toolbar of your spreadsheet editor, click the button to increase the number of decimals to 6.
60 -
61 -= Why do some scripts show an execution time of 0 second? =
62 -
63 -That can happen if your PHP version is 7.1 or 7.2. With those versions, Code Profiler can only use microseconds for its metrics, while with versions 7.3 and above it can use the system's high resolution time in nanoseconds. It can also happen if a PHP script has only a couple of lines of code, its execution time is too quick to be measured, hence it will show 0.
64 -
65 54 = Do I need to deactivate Code Profiler when I'm not using it ? =
66 55
67 56 There's no need to deactivate Code Profiler when you don't use it, it has no performance impact on your site.
57 +Because an update can affect the performance of your site, you should consider running it after every plugin or theme update.
68 58
69 -= Why does Code Profiler warn me that I have multiple plugins using Composer? =
59 += Is Code Profiler multisite compatible? =
70 60
71 -Composer, a tool for dependency management in PHP, is included in many popular plugins and themes. It is used to autoload PHP classes.
72 -Code Profiler will inform you if two or more activated plugins use it because you will need to take it into consideration when reading and interpreting the results. Let's take an example:
73 -Assuming you have four plugins, #1, #2, #3 and #4. Both plugins #1 and #4 include and require Composer. WordPress will start and load plugin #1, which will run an instance of Composer to load its classes. Immediately after, WordPress will load plugins #2 and #3. Then, it will load plugin #4, which too will need to load its classes. However, plugin #4 will not start a new instance of Composer but, instead, will rely on the one from plugin #1 to load its own classes.
74 -As a result, the execution time of plugin #1 will increase (its instance of Composer is used to load classes for plugin #4 too), while the execution time of plugin #4 will decrease (it doesn't need to start a new instance of Composer). Therefore, if you have a dozen or more plugins using Composer, it is important to take into consideration that the execution time of plugin #1 may be much higher than other plugins.
75 -Also, assuming you are a developer and just want to profile a plugin that you wrote and that includes Composer, you will need to disable any other plugin using Composer in order to get the most accurate results for your plugin only.
76 -
77 -= Is Code Profiler multisite compatible? =
78 61 Code Profiler is multisite compatible. Note however that for security reasons, only the superadmin can run it.
79 62
80 63 = What are the requirements for running Code Profiler? =
81 64
@@ -105,10 +88,184 @@
105 88 8. [Pro version]: CSV Export.
106 89 9. [Pro version]: CSV Export.
107 90 10. [Pro version]: File I/O List
108 91 11. [Pro version]: Database queries performance.
92 +12. [Pro version]: Remote connections monitoring.
109 93
110 94 == Changelog ==
95 +
96 += 1.9.6 (23 September 2026) =
97 +
98 +* Better error handling during the profiler activation and deactivation.
99 +* [Pro version] : The "Do not display more than X rows in a table" option applies now to the table of the "Profiles List" page too.
100 +* Fixed a problem with multiline strings that some localization tools doesn't seem to handle correctly.
101 +
102 += 1.9.5 (12 June 2026) =
103 +
104 +* Fixed a bug where users couldn't download the grah as a PNG image with the latest version of FireFox (151.0.2+).
105 +
106 += 1.9.4 (09 June 2026) =
107 +
108 +* This release includes many small fixes and adjustments to make Code Profiler better (bugs fixed, better error management etc).
109 +
110 += 1.9.3 (18 May 2026) =
111 +
112 +* Fixed small UI compatibility issues with WordPress 7.0.
113 +
114 += 1.9.2 (24 April 2026) =
115 +
116 +* Removed the warning about composer; it was confusing and has become obsolete.
117 +* Updated the profiler's browser signatures.
118 +* [Pro version] : Removed a double-slash bug in file paths.
119 +* Fixed a bug where the HTTP response log could be empty.
120 +
121 += 1.9.1 (19 March 2026) =
122 +
123 +* Cron events can be profiled with WP-CLI using the `--wpcron` parameter.
124 +
125 += 1.9 (05 February 2026) =
126 +
127 +* It is now possible to profile cron events: on the profiler main page, click "WP-Cron" and select the cron to profile.
128 +* Updated browser's signatures.
129 +* Updated Chartjs library.
130 +* Small fixes and adjustments.
131 +
132 += 1.8.2 (23 December 2025) =
133 +
134 +* A warning message will be displayed if the Xdebug extension is loaded as it can impact the profiler's results.
135 +* [Pro version] : Code Profiler will warn if SAVEQUERIES has been disabled by the user.
136 +
137 += 1.8.1 (09 Octobre 2025) =
138 +
139 +* When profiling with WP-CLI, the results can be returned in JSON-encoded or CSV format, using the new `--out=<json|csv>` parameter. The output can be redirected to a file, e.g., `wp code-profiler run --out=csv > /tmp/results.csv`.
140 +
141 += 1.8 (1st October, 2025) =
142 +
143 +* This version introduces a new feature requested by many users: the possibility to re-run an existing profile. In the "Profiles List" table, click on the "Re-run" row action link and Code Profiler will run again the profile with the same options and parameters.
144 +* Fixed an "Automatic conversion of false to array is deprecated" message in PHP 8.1+.
145 +* Small fixes and adjustments.
146 +
147 += 1.7.7 (23 June, 2025) =
148 +
149 +* Fixed an issue where the profiler wasn't able to detect if the connection was over HTTPS when running WP CLI.
150 +* Fixed a potential "Function _load_textdomain_just_in_time was called incorrectly" notice when running WP CLI.
151 +
152 += 1.7.6 (19 June, 2025) =
153 +
154 +* You can now enter a raw POST payload as opposed to a formatted one, by selecting the "Profiler > Advanced Options > HTTP Method > Content-type > application/x-www-form-urlencoded (raw)" option.
155 +* [Free version] : Fixed a PHP "WP_List_Table::__set(): The property is_empty is not declared" error.
156 +* The "HTTP response log" will show the POST payload (if any) for the last profile.
157 +* Updated ChartJS.
158 +* Small fixes and adjustments.
159 +
160 += 1.7.5 (06 May, 2025) =
161 +
162 +* An option to enable PHP error debugging when the profiler is running was added. It is enabled by default and can be turned off in the "Settings" page.
163 +* Updated ChartJS.
164 +* Fixed a few deprecated notices in translation loading, when starting the profiler.
165 +
166 += 1.7.4 (April 11, 2025) =
167 +
168 +* Prevent duplicate items in the "File and folder exclusions" list.
169 +* Fixed a PHP 8.4 "fgetcsv(): the $escape parameter must be provided" deprecated notice.
170 +* [Pro version] : Fixed several PHP 8.4 "fputcsv(): the $escape parameter must be provided" deprecated notices.
171 +* Ensure compatibility with the latest WordPress 6.8.
172 +* Updated ChartJS.
173 +
174 += 1.7.3 (February 15, 2025) =
175 +
176 +* Updated ChartJS.
177 +* Updated browser's signatures.
178 +* Truncated exported CSV data to max 32,000 characters per cell to prevent a "maximum numbers of characters per cell was exceeded" error in Libre Office and similar spreadsheet apps.
179 +
180 += 1.7.2 (November 26, 2024) =
181 +
182 +* The profiler will now save to a log the HTTP headers and body response of the last profile. It can be useful to debug errors. To view the log, click on the "Logs" tab of the main page.
183 +* Fixed a "Function _load_textdomain_just_in_time was called incorrectly" PHP notice.
184 +* Updated ChartJS.
185 +* Small fixes and adjustments.
186 +
187 += 1.7.1 (September 27, 2024) =
188 +
189 +* Fixed a "Security keys do not match" error message that occurred when some object caching plugins were installed on the site. The profiler will no longer temporarily save the key to the database to prevent it from being cached by such plugins.
190 +* Fixed a fatal error when profiling a child site on a multisite installation with WP CLI.
191 +* [Pro version] : Fixed a bug with some row action links in the "Methods and Functions Performance" that were displaying "View function" instead of "View script" when the script was loaded either with the PHP "require" or "include" expression.
192 +
193 += 1.7 (August 14, 2024) =
194 +
195 +* The system information report includes now an AJAX API test to make sure the endpoint is accessible to the profiler.
196 +* If the profiler returned a 301/302 HTTP redirection error message, the new location would be written to the log.
197 +* Updated ChartJS.
198 +
199 += 1.6.10 (May 30, 2024) =
200 +
201 +* Fixed a bug that affected Microsoft Windows OS only. In some cases, it wasn't possible to view, delete or rename a profile.
202 +
203 += 1.6.9 (May 27, 2024) =
204 +
205 +* You can now exclude files and folders from the profiling process. See "Advanced Options > File and folder exclusions" in the profiler's main page.
206 +* Fixed a bug where optional HTTP headers could be truncated.
207 +* Replaced all calls to glob() with DirectoryIterator() to make file search compatible with remote files.
208 +* Updated ChartJS.
209 +* Updated browser's signatures.
210 +
211 += 1.6.8 (February 14, 2024) =
212 +
213 +* Fixed an issue in the theme switcher where, in some cases, a child theme could throw an error because the wrong stylesheet was loaded.
214 +* Improved the parsing of the backtrace when attempting to find which plugin or theme initiated a remote connection.
215 +
216 += 1.6.7 (February 10, 2024) =
217 +
218 +* If you want to profile different themes, you can now select which theme to load when the profiler is running.
219 +* Updated ChartJS.
220 +
221 += 1.6.6 (December 6, 2023) =
222 +
223 +* You can now profile JSON-encoded payloads: In the profiler's main page, click the "Advanced Options" button, then select "HTTP Method > POST > Content-type > application/json".
224 +* The Accuracy/precision level is now displayed in the tooltip when viewing a profile.
225 +* Performance and memory optimization.
226 +* [Pro version] : In the "Methods and Functions Performance" section "{main}" is now replaced with the corresponding include/require function (e.g., {include_once} , {require} etc).
227 +* [Pro version] : 2 new columns were added to the "File I/O List": Status and Resource id. The former will display if the file was closed or not, which could be helpful to detect plugins or themes that open files but don't close them before exiting, the latter the ID of that resource.
228 +* [Free version]: The directory were the profiler stores its logs can be user-defined, by adding the `CODE_PROFILER_UPLOAD_DIR` constant to your wp-config.php (e.g., `define('CODE_PROFILER_UPLOAD_DIR', '/full/path/to/folder');`.
229 +* [Pro version]: The directory were the profiler stores its logs can be user-defined, by adding the `CODE_PROFILER_PRO_UPLOAD_DIR` constant to your wp-config.php (e.g., `define('CODE_PROFILER_PRO_UPLOAD_DIR', '/full/path/to/folder');`.
230 +* Several small fixes and adjustments.
231 +
232 += 1.6.5 (October 5, 2023) =
233 +
234 +* Updated Charts.js libraries.
235 +* Fixed potential PHP error when calling number_format function.
236 +* Small fixes and adjustments.
237 +
238 += 1.6.4 (August 3, 2023) =
239 +
240 +* Added the possibility to send custom HTTP headers when profiling a site. See "Advanced Options > HTTP headers" in the profiler's main page.
241 +* Several small fixes and adjustments.
242 +* Updated Charts.js libraries.
243 +
244 += 1.6.3 (June 18, 2023) =
245 +
246 +* A new option was added to tweak the size of the memory buffer used by the profiler. It can be found in "Settings > Buffer size".
247 +* The profiler will disable the PHP display_errors directive so that potential notice, warning and error messages won't mess up with the AJAX response.
248 +* Small fixes and adjustments.
249 +
250 += 1.6.2 (May 20, 2023) =
251 +
252 +* Fixed an issue where the execution time in the "Plugins & Theme Performance" section did not include any occurred remote connection.
253 +* Updated Charts.js libraries.
254 +* Updated FAQ and Help sections.
255 +* Small fixes and adjustments.
256 +
257 += 1.6.1 (April 22, 2023) =
258 +
259 +* Added a hook to prevent a timeout if a plugin changed cURL timeout options (props @davidbawiec).
260 +* Several small fixes and adjustments.
261 +
262 += 1.6 (March 12, 2023) =
263 +
264 +* [Pro version]: We added a new section: Remote Connections. It shows all HTTP connections originating from your WordPress website and includes the URL, the HTTP status code, the duration and, as usual, a full backtrace.
265 +* Updated browser's signatures.
266 +* Updated Charts.js libraries.
267 +* Small fixes and adjustments.
111 268
112 269 = 1.5.5 (February 24, 2023) =
113 270
114 271 * Improved the system information report.