@@ -8,8 +8,8 @@ class Profiler {
8
8
9
9
private $ type ;
10
10
private $ focus ;
11
- private $ loggers = array ();
12
- private $ stage_hooks = array (
11
+ private $ loggers = array ();
12
+ private $ stage_hooks = array (
13
13
'bootstrap ' => array (
14
14
'muplugins_loaded ' ,
15
15
'plugins_loaded ' ,
@@ -34,6 +34,7 @@ class Profiler {
34
34
'wp_footer ' ,
35
35
),
36
36
);
37
+
37
38
private $ current_stage_hooks = array ();
38
39
private $ running_hook = null ;
39
40
private $ previous_filter = null ;
@@ -55,7 +56,8 @@ public function __construct( $type, $focus ) {
55
56
public function get_loggers () {
56
57
foreach ( $ this ->loggers as $ i => $ logger ) {
57
58
if ( is_array ( $ logger ) ) {
58
- $ this ->loggers [ $ i ] = $ logger = new Logger ( $ logger );
59
+ $ logger = new Logger ( $ logger );
60
+ $ this ->loggers [ $ i ] = $ logger ;
59
61
}
60
62
if ( ! isset ( $ logger ->callback ) ) {
61
63
continue ;
@@ -78,7 +80,8 @@ public function run() {
78
80
WP_CLI ::add_wp_hook (
79
81
'muplugins_loaded ' ,
80
82
function () {
81
- if ( $ url = WP_CLI ::get_runner ()->config ['url ' ] ) {
83
+ $ url = WP_CLI ::get_runner ()->config ['url ' ];
84
+ if ( ! empty ( $ url ) ) {
82
85
WP_CLI ::set_url ( trailingslashit ( $ url ) );
83
86
} else {
84
87
WP_CLI ::set_url ( home_url ( '/ ' ) );
@@ -103,7 +106,7 @@ function() {
103
106
$ stage_hooks = array_merge ( $ stage_hooks , $ hooks );
104
107
}
105
108
$ end_hook = substr ( $ this ->focus , 0 , -7 );
106
- $ key = array_search ( $ end_hook , $ stage_hooks );
109
+ $ key = array_search ( $ end_hook , $ stage_hooks, true );
107
110
if ( isset ( $ stage_hooks [ $ key - 1 ] ) ) {
108
111
$ start_hook = $ stage_hooks [ $ key - 1 ];
109
112
WP_CLI ::add_wp_hook ( $ start_hook , array ( $ this , 'wp_tick_profile_begin ' ), 9999 );
@@ -136,17 +139,22 @@ public function wp_tick_profile_begin( $value = null ) {
136
139
// and hide calls from the tick handler and backtraces.
137
140
// Copied from P3 Profiler
138
141
if ( extension_loaded ( 'xcache ' ) ) {
139
- @ini_set ( 'xcache.optimizer ' , false ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
142
+ @ini_set ( 'xcache.optimizer ' , false ); // phpcs:ignore
143
+ // WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
140
144
} elseif ( extension_loaded ( 'apc ' ) ) {
141
- @ini_set ( 'apc.optimization ' , 0 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
145
+ @ini_set ( 'apc.optimization ' , 0 ); // phpcs:ignore
146
+ // WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
142
147
apc_clear_cache ();
143
148
} elseif ( extension_loaded ( 'eaccelerator ' ) ) {
144
- @ini_set ( 'eaccelerator.optimizer ' , 0 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
149
+ @ini_set ( 'eaccelerator.optimizer ' , 0 ); // phpcs:ignore
150
+ // WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
145
151
if ( function_exists ( 'eaccelerator_optimizer ' ) ) {
146
- @eaccelerator_optimizer ( false ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- disabling eaccelerator on runtime can faild
152
+ @eaccelerator_optimizer ( false ); // phpcs:ignore
153
+ // WordPress.PHP.NoSilencedErrors.Discouraged -- disabling eaccelerator on runtime can faild
147
154
}
148
155
} elseif ( extension_loaded ( 'Zend Optimizer+ ' ) ) {
149
- @ini_set ( 'zend_optimizerplus.optimization_level ' , 0 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
156
+ @ini_set ( 'zend_optimizerplus.optimization_level ' , 0 ); // phpcs:ignore
157
+ // WordPress.PHP.NoSilencedErrors.Discouraged -- ini_set can be disabled on server.
150
158
}
151
159
152
160
register_tick_function ( array ( $ this , 'handle_function_tick ' ) );
@@ -173,7 +181,7 @@ public function wp_hook_begin() {
173
181
}
174
182
175
183
$ current_filter = current_filter ();
176
- if ( ( 'stage ' === $ this ->type && in_array ( $ current_filter , $ this ->current_stage_hooks ) )
184
+ if ( ( 'stage ' === $ this ->type && in_array ( $ current_filter , $ this ->current_stage_hooks , true ) )
177
185
|| ( 'hook ' === $ this ->type && ! $ this ->focus ) ) {
178
186
$ pseudo_hook = "{$ current_filter }:before " ;
179
187
if ( isset ( $ this ->loggers [ $ pseudo_hook ] ) ) {
@@ -257,11 +265,11 @@ public function wp_hook_end( $filter_value = null ) {
257
265
}
258
266
259
267
$ current_filter = current_filter ();
260
- if ( ( 'stage ' === $ this ->type && in_array ( $ current_filter , $ this ->current_stage_hooks ) )
268
+ if ( ( 'stage ' === $ this ->type && in_array ( $ current_filter , $ this ->current_stage_hooks , true ) )
261
269
|| ( 'hook ' === $ this ->type && ! $ this ->focus ) ) {
262
270
$ this ->loggers [ $ current_filter ]->stop ();
263
271
if ( 'stage ' === $ this ->type ) {
264
- $ key = array_search ( $ current_filter , $ this ->current_stage_hooks );
272
+ $ key = array_search ( $ current_filter , $ this ->current_stage_hooks , true );
265
273
if ( false !== $ key && isset ( $ this ->current_stage_hooks [ $ key + 1 ] ) ) {
266
274
$ pseudo_hook = "{$ this ->current_stage_hooks [$ key +1 ]}:before " ;
267
275
} else {
@@ -287,7 +295,7 @@ public function handle_function_tick() {
287
295
if ( ! is_null ( $ this ->tick_callback ) ) {
288
296
$ time = microtime ( true ) - $ this ->tick_start_time ;
289
297
290
- $ callback_hash = md5 ( serialize ( $ this ->tick_callback . $ this ->tick_location ) );
298
+ $ callback_hash = md5 ( serialize ( $ this ->tick_callback . $ this ->tick_location ) ); // phpcs:ignore
291
299
if ( ! isset ( $ this ->loggers [ $ callback_hash ] ) ) {
292
300
$ this ->loggers [ $ callback_hash ] = array (
293
301
'callback ' => $ this ->tick_callback ,
@@ -304,7 +312,8 @@ public function handle_function_tick() {
304
312
$ this ->loggers [ $ callback_hash ]['time ' ] += $ time ;
305
313
306
314
if ( isset ( $ wpdb ) ) {
307
- for ( $ i = $ this ->tick_query_offset ; $ i < count ( $ wpdb ->queries ); $ i ++ ) {
315
+ $ total_queries = count ( $ wpdb ->queries );
316
+ for ( $ i = $ this ->tick_query_offset ; $ i < $ total_queries ; $ i ++ ) {
308
317
$ this ->loggers [ $ callback_hash ]['query_time ' ] += $ wpdb ->queries [ $ i ][1 ];
309
318
$ this ->loggers [ $ callback_hash ]['query_count ' ]++;
310
319
}
@@ -329,16 +338,17 @@ public function handle_function_tick() {
329
338
$ frame = $ bt [1 ];
330
339
}
331
340
332
- $ callback = $ location = '' ;
333
- if ( in_array ( strtolower ( $ frame ['function ' ] ), array ( 'include ' , 'require ' , 'include_once ' , 'require_once ' ) ) ) {
341
+ $ location = '' ;
342
+ $ callback = '' ;
343
+ if ( in_array ( strtolower ( $ frame ['function ' ] ), array ( 'include ' , 'require ' , 'include_once ' , 'require_once ' ), true ) ) {
334
344
$ callback = $ frame ['function ' ] . " ' " . $ frame ['args ' ][0 ] . "' " ;
335
345
} elseif ( isset ( $ frame ['object ' ] ) && method_exists ( $ frame ['object ' ], $ frame ['function ' ] ) ) {
336
346
$ callback = get_class ( $ frame ['object ' ] ) . '-> ' . $ frame ['function ' ] . '() ' ;
337
347
} elseif ( isset ( $ frame ['class ' ] ) && method_exists ( $ frame ['class ' ], $ frame ['function ' ] ) ) {
338
348
$ callback = $ frame ['class ' ] . ':: ' . $ frame ['function ' ] . '() ' ;
339
349
} elseif ( ! empty ( $ frame ['function ' ] ) && function_exists ( $ frame ['function ' ] ) ) {
340
350
$ callback = $ frame ['function ' ] . '() ' ;
341
- } elseif ( '__lambda_func ' == $ frame ['function ' ] || '{closure} ' == $ frame ['function ' ] ) {
351
+ } elseif ( '__lambda_func ' === $ frame ['function ' ] || '{closure} ' = == $ frame ['function ' ] ) {
342
352
$ callback = 'function(){} ' ;
343
353
}
344
354
@@ -447,7 +457,8 @@ private function load_wordpress_with_template() {
447
457
448
458
// Template is normally loaded in global scope, so we need to replicate
449
459
foreach ( $ GLOBALS as $ key => $ value ) {
450
- global $ {$ key }; // phpcs:ignore PHPCompatibility.PHP.ForbiddenGlobalVariableVariable.NonBareVariableFound -- Syntax is updated to compatible with php 5 and 7.
460
+ global $ {$ key }; // phpcs:ignore
461
+ // PHPCompatibility.PHP.ForbiddenGlobalVariableVariable.NonBareVariableFound -- Syntax is updated to compatible with php 5 and 7.
451
462
}
452
463
453
464
// Load the theme template.
@@ -460,7 +471,7 @@ private function load_wordpress_with_template() {
460
471
}
461
472
}
462
473
ob_start ();
463
- require_once ( ABSPATH . WPINC . '/template-loader.php ' ) ;
474
+ require_once ABSPATH . WPINC . '/template-loader.php ' ;
464
475
ob_get_clean ();
465
476
if ( $ this ->running_hook ) {
466
477
$ this ->loggers [ $ this ->running_hook ]->stop ();
@@ -480,7 +491,8 @@ private function load_wordpress_with_template() {
480
491
* Get a human-readable name from a callback
481
492
*/
482
493
private static function get_name_location_from_callback ( $ callback ) {
483
- $ name = $ location = '' ;
494
+ $ location = '' ;
495
+ $ name = '' ;
484
496
$ reflection = false ;
485
497
if ( is_array ( $ callback ) && is_object ( $ callback [0 ] ) ) {
486
498
$ reflection = new \ReflectionMethod ( $ callback [0 ], $ callback [1 ] );
@@ -567,13 +579,13 @@ private static function set_filter_callbacks( $filter, $callbacks ) {
567
579
global $ wp_filter ;
568
580
569
581
if ( ! isset ( $ wp_filter [ $ filter ] ) && class_exists ( 'WP_Hook ' ) ) {
570
- $ wp_filter [ $ filter ] = new \WP_Hook ;
582
+ $ wp_filter [ $ filter ] = new \WP_Hook (); // phpcs:ignore
571
583
}
572
584
573
585
if ( is_a ( $ wp_filter [ $ filter ], 'WP_Hook ' ) ) {
574
586
$ wp_filter [ $ filter ]->callbacks = $ callbacks ;
575
587
} else {
576
- $ wp_filter [ $ filter ] = $ callbacks ;
588
+ $ wp_filter [ $ filter ] = $ callbacks ; // phpcs:ignore
577
589
}
578
590
}
579
591
0 commit comments