WordPress.org

Make WordPress Core

Ticket #19700: 19700.2.diff

File 19700.2.diff, 1.9 KB (added by ryan, 6 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' ];