WordPress.org

Make WordPress Core

Ticket #19700: 19700.2.diff

File 19700.2.diff, 1.9 KB (added by ryan, 3 years ago)

Preserve precision

  • wp-includes/cron.php

     
    194194 */ 
    195195function spawn_cron( $local_time = 0 ) { 
    196196 
    197         if ( !$local_time ) 
    198                 $local_time = time(); 
     197        if ( ! $local_time ) 
     198                $local_time = microtime( true ); 
    199199 
    200200        if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) ) 
    201201                return; 
     
    226226                if ( !empty($_POST) || defined('DOING_AJAX') ) 
    227227                        return; 
    228228 
    229                 $doing_wp_cron = $local_time; 
     229                $doing_wp_cron = sprintf( '%.22F', $local_time ); 
    230230                set_transient( 'doing_cron', $doing_wp_cron ); 
    231231 
    232232                ob_start(); 
     
    241241                return; 
    242242        } 
    243243 
    244         $doing_wp_cron = $local_time; 
     244        $doing_wp_cron = sprintf( '%.22F', $local_time ); 
    245245        set_transient( 'doing_cron', $doing_wp_cron ); 
    246246 
    247247        $cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron=' . $doing_wp_cron; 
     
    264264        if ( false === $crons = _get_cron_array() ) 
    265265                return; 
    266266 
    267         $local_time = time(); 
     267        $local_time = microtime( true ); 
    268268        $keys = array_keys( $crons ); 
    269269        if ( isset($keys[0]) && $keys[0] > $local_time ) 
    270270                return; 
  • wp-cron.php

     
    4848        die(); 
    4949 
    5050$keys = array_keys( $crons ); 
    51 $local_time = time(); 
     51$local_time = microtime( true ); 
    5252 
    5353if ( isset($keys[0]) && $keys[0] > $local_time ) 
    5454        die(); 
     
    6161                // Called from external script/job. Try setting a lock. 
    6262                if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $local_time ) ) 
    6363                        return; 
    64                 $doing_cron_transient = $doing_wp_cron = time(); 
     64                $doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) ); 
    6565                set_transient( 'doing_cron', $doing_wp_cron ); 
    6666        } else { 
    6767                $doing_wp_cron = $_GET[ 'doing_wp_cron' ];