Skip to Content


Finalize Nebula timings by adding total execution measurements and add times within each category.

PHP March 7, 2018


This function runs automatically, so it is not called manually. Is this incorrect?

Additional Notes

By calling this function you may prematurely end full execution timings and decrease accuracy. It’s best to let Nebula call this when it is ready.

Source File

Located in /libs/Utilities/Utilities.php on line 1111.

1 Hook

Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.

Need a new filter hook? Request one here.

This function has no action hooks available. Request one?

        public function finalize_timings(){
            //Add category times together
            if ( !empty($this->server_timings['categories']) ){
                foreach ( $this->server_timings['categories'] as $category => $times ){
                    if ( count($times) > 1 ){
                        $this->server_timings[$category . ' [Total]'] = array('time' => array_sum($times));

            //Add pre-Nebula WordPress time
            $this->server_timings['WordPress Core'] = array(
                'start' => $_SERVER['REQUEST_TIME_FLOAT'],
                'end' => $_SERVER['REQUEST_TIME_FLOAT']+$this->time_before_nebula,
                'time' => $this->time_before_nebula-$_SERVER['REQUEST_TIME_FLOAT']

            //Database Queries
            global $wpdb;
            $total_query_time = 0;
            if ( !empty($wpdb->queries) ){
                foreach ( $wpdb->queries as $query ){
                    $total_query_time += $query[1];
                $this->server_timings['DB Queries [Total]'] = array('time' => $total_query_time);

            //Resource Usage
            $resource_usage = getrusage();

            //System resource usage timing
            $this->server_timings['PHP System'] = array(
                'start' => $_SERVER['REQUEST_TIME_FLOAT'],
                'end' => $_SERVER['REQUEST_TIME_FLOAT']+($resource_usage['ru_stime.tv_usec']),
                'time' => $resource_usage['ru_stime.tv_usec']/1000000

            //User resource usage timing
            $this->server_timings['PHP User'] = array(
                'start' => $_SERVER['REQUEST_TIME_FLOAT'],
                'end' => $_SERVER['REQUEST_TIME_FLOAT']+($resource_usage['ru_utime.tv_usec']),
                'time' => $resource_usage['ru_utime.tv_usec']/1000000

            //Add Nebula total
            $this->server_timings['Nebula [Total]'] = array(
                'start' => $this->time_before_nebula,
                'end' => microtime(true),
                'time' => microtime(true)-$this->time_before_nebula

            //Total PHP execution time
            $this->server_timings['PHP [Total]'] = array(
                'start' => $_SERVER['REQUEST_TIME_FLOAT'],
                'end' => microtime(true),
                'time' => microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']

            return apply_filters('nebula_finalize_timings', $this->server_timings); //Allow functions/plugins to add/modifiy timings


This function can not be short-circuited with an override filter. Request one?