Make WordPress Core

Ticket #32478: 32478.diff

File 32478.diff, 1.7 KB (added by ericlewis, 11 years ago)
  • src/wp-cron.php

     
    6464if ( isset($keys[0]) && $keys[0] > $gmt_time )
    6565        die();
    6666
    67 $doing_cron_transient = get_transient( 'doing_cron');
    6867
     68// The cron lock: a unix timestamp from when the cron was spawned.
     69$doing_cron_transient = get_transient( 'doing_cron' );
     70
    6971// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
    7072if ( empty( $doing_wp_cron ) ) {
    7173        if ( empty( $_GET[ 'doing_wp_cron' ] ) ) {
     
    7981        }
    8082}
    8183
    82 // Check lock
     84/*
     85 * The cron lock (a unix timestamp set when the cron was spawned),
     86 * must match $doing_wp_cron (the "key").
     87 */
    8388if ( $doing_cron_transient != $doing_wp_cron )
    8489        return;
    8590
  • src/wp-includes/cron.php

     
    225225                return;
    226226
    227227        /*
    228         * multiple processes on multiple web servers can run this code concurrently
    229         * try to make this as atomic as possible by setting doing_cron switch
    230         */
     228         * A unix timestamp of when the last cron was spawned and has not finished running.
     229         *
     230         * Multiple processes on multiple web servers can run this code concurrently,
     231         * this lock attempts to make spawning as atomic as possible.
     232         */
    231233        $lock = get_transient('doing_cron');
    232234
    233235        if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS )
     
    266268                return;
    267269        }
    268270
     271        // Set the cron lock with the current unix timestamp, when the cron is being spawned.
    269272        $doing_wp_cron = sprintf( '%.22F', $gmt_time );
    270273        set_transient( 'doing_cron', $doing_wp_cron );
    271274