update_cache( $processes ); } private static function get_processes() { $mywp_cache = new MywpCache( 'mywp_times' ); $procecces = $mywp_cache->get_cache(); if( empty( $procecces ) ) { $procecces = array(); } return $procecces; } private static function get_process( $filter_name = false ) { if( empty( $filter_name ) ) { return false; } $processes = self::get_processes(); if( empty( $processes[ $filter_name ] ) ) { return false; } return $processes[ $filter_name ]; } public static function process_set_1() { self::set_process( -1 ); } public static function process_set_10() { self::set_process( 10 ); } public static function process_set_100() { self::set_process( 100 ); } public static function process_set_10000() { self::set_process( 10000 ); } public static function mywp_debug_renders( $debug_renders ) { $debug_renders[ self::$id ] = array( 'debug_type' => 'dev', 'title' => __( 'Action Times' , 'my-wp' ), ); return $debug_renders; } protected static function mywp_developer_debug() { if( ! MywpDeveloper::is_debug_item( 'debug_time' ) ) { echo esc_html( __( 'Not activated.' , 'my-wp' ) ); return false; } $processes = self::get_processes(); if( empty( $processes ) ) { return false; } $first_process = self::get_first_process(); if( empty( $first_process ) ) { return false; } echo esc_html( sprintf( '%s = ' , __( 'All' ) ) ); echo esc_html( self::print_format( $first_process ) ); echo esc_html( sprintf( 'Memory peak: %s' , MywpHelper::get_byte( memory_get_peak_usage() ) ) ); $before_screen_process = self::get_before_screen_process(); if( empty( $before_screen_process ) ) { return false; } echo esc_html( sprintf( '%s = ' , __( 'Before Screen' , 'my-wp' ) ) ); echo esc_html( self::print_format( $before_screen_process ) ); $screen_process = self::get_screen_process(); if( empty( $screen_process ) ) { return false; } echo esc_html( sprintf( '%s = ' , __( 'Screen' , 'my-wp' ) ) ); echo esc_html( self::print_format( $screen_process ) ); foreach( $processes as $action_hook_name => $priority_processes ) { echo esc_html( $action_hook_name ) . "\n"; $last_priority_process = end( $priority_processes ); $first_priority_process = reset( $priority_processes ); $total_screen_process = self::format_process( $first_priority_process , $last_priority_process ); echo esc_html( sprintf( '%s = ' , __( 'Total' , 'my-wp' ) ) ); echo esc_html( self::print_format( $total_screen_process ) ); $priority_processes_count = count( $priority_processes ); $priority_processes_keys = array_keys( $priority_processes ); for( $i = 0; $i < ( $priority_processes_count -1 ); ++$i ) { $current_priority = $priority_processes_keys[ $i ]; $next_priority = $priority_processes_keys[ ( $i + 1 ) ]; $current_process = $priority_processes[ $current_priority ]; $next_process = $priority_processes[ $next_priority ]; $diff_process = self::format_process( $current_process , $next_process ); echo esc_html( sprintf( '[%s] - [%s] = ' , $current_priority , $next_priority ) ); echo esc_html( self::print_format( $diff_process ) ); echo self::print_filters( $action_hook_name , $current_priority , $next_priority ); } } } protected static function mywp_debug_render() { if( ! MywpDeveloper::is_debug_item( 'debug_time' ) ) { echo esc_html( __( 'Not activated.' , 'my-wp' ) ); return false; } $processes = self::get_processes(); if( empty( $processes ) ) { return false; } echo ''; $first_process = self::get_first_process(); if( empty( $first_process ) ) { return false; } echo ''; printf( '' , __( 'All' ) ); printf( '' , MywpHelper::get_byte( memory_get_peak_usage() ) ) ); echo ''; echo '
%s%s' , esc_html( self::print_format( $first_process ) ) ); echo esc_html( sprintf( ' - Memory peak: %s
'; echo ''; $before_screen_process = self::get_before_screen_process(); if( empty( $before_screen_process ) ) { return false; } echo ''; printf( '' , __( 'Before Screen' , 'my-wp' ) ); printf( '' , esc_html( self::print_format( $before_screen_process ) ) ); echo ''; $screen_process = self::get_screen_process(); if( empty( $screen_process ) ) { return false; } echo ''; printf( '' , __( 'Screen' , 'my-wp' ) ); printf( '' , esc_html( self::print_format( $screen_process ) ) ); echo ''; echo '
%s%s
%s%s
'; foreach( $processes as $action_hook_name => $priority_processes ) { printf( '

%s

' , esc_html( $action_hook_name ) ); echo ''; $last_priority_process = end( $priority_processes ); $first_priority_process = reset( $priority_processes ); $total_screen_process = self::format_process( $first_priority_process , $last_priority_process ); echo ''; printf( '' , __( 'Total' , 'my-wp' ) ); printf( '' , esc_html( self::print_format( $total_screen_process ) ) ); echo ''; $priority_processes_count = count( $priority_processes ); $priority_processes_keys = array_keys( $priority_processes ); for( $i = 0; $i < ( $priority_processes_count -1 ); ++$i ) { $current_priority = $priority_processes_keys[ $i ]; $next_priority = $priority_processes_keys[ ( $i + 1 ) ]; $current_process = $priority_processes[ $current_priority ]; $next_process = $priority_processes[ $next_priority ]; $diff_process = self::format_process( $current_process , $next_process ); echo ''; printf( '' , esc_html( sprintf( '[%s] - [%s]' , $current_priority , $next_priority ) ) ); printf( ''; echo ''; } echo '
%s%s
%s%s' , esc_html( self::print_format( $diff_process ) ) ); echo self::print_filters( $action_hook_name , $current_priority , $next_priority , true ); echo '
'; } //printf( '
%s
' , print_r( $processes , true ) ); } private static function get_first_process() { $processes = self::get_processes(); if( empty( $processes ) ) { return false; } $init_process = self::$init_process; $last_process_priorities = end( $processes ); $last_process = end( $last_process_priorities ); return self::format_process( $init_process , $last_process ); } private static function get_before_screen_process() { $processes = self::get_processes(); if( empty( $processes ) ) { return false; } $init_process = self::$init_process; $before_screen_process = false; if( ! empty( $processes['admin_head'][-1] ) ) { $before_screen_process = $processes['admin_head'][-1]; } elseif( ! empty( $processes['wp_head'][-1] ) ) { $before_screen_process = $processes['wp_head'][-1]; } return self::format_process( $init_process , $before_screen_process ); } private static function get_screen_process() { $processes = self::get_processes(); if( empty( $processes ) ) { return false; } $before_screen_process = false; if( ! empty( $processes['admin_head'][-1] ) ) { $before_screen_process = $processes['admin_head'][-1]; } elseif( ! empty( $processes['wp_head'][-1] ) ) { $before_screen_process = $processes['wp_head'][-1]; } $last_process_priorities = end( $processes ); $last_process = end( $last_process_priorities ); return self::format_process( $before_screen_process , $last_process ); } private static function format_process( $start_process = false , $end_process = false ) { if( empty( $start_process ) or empty( $end_process ) ) { return false; } $format_process = array( 'start' => $start_process, 'end' => $end_process, 'second' => ( $end_process['microtime'] - $start_process['microtime'] ), 'memory' => ( $end_process['memory_get_usage'] - $start_process['memory_get_usage'] ), 'load_avg' => $start_process['load_avg'], ); return $format_process; } private static function print_format( $process ) { if( ! isset( $process['second'] ) or ! isset( $process['memory'] ) ) { return false; } if( function_exists( 'sys_getloadavg' ) ) { $print_format = sprintf( 'Time: %s - Memory: %s - LoadAvg: %s' , self::get_second( $process['second'] ) , MywpHelper::get_byte( $process['memory'] ) , strip_tags( $process['load_avg'] ) ); } else { $print_format = sprintf( 'Time: %s - Memory: %s' , self::get_second( $process['second'] ) , MywpHelper::get_byte( $process['memory'] ) ); } $print_format .= "\n"; return $print_format; } private static function print_filters( $action_hook_name , $from_priority , $to_priority , $is_list = false ) { if( empty( $action_hook_name ) ) { return false; } $filter_to_func = MywpDeveloper::get_filter_to_func( $action_hook_name ); if( empty( $filter_to_func ) ) { return false; } $print_filters = false; if( $is_list ) { $print_filters = ''; } else { $print_filters .= "\n"; } return $print_filters; } private static function get_second( $second = false ) { if( $second === false ) { return false; } $decimals = 3; $number = false; if( function_exists( 'number_format_i18n' ) ) { $number = number_format_i18n( $second , $decimals ); } else { $number = number_format( $second , $decimals ); } return "{$number} seconds"; } } MywpDeveloperModuleDevTimes::init(); endif;