Improve inline documentation for the cron lock behavior.
Props ericlewis. Fixes #32478. git-svn-id: https://develop.svn.wordpress.org/trunk@32580 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
2c32effa02
commit
eb60152449
@ -64,6 +64,8 @@ $gmt_time = microtime( true );
|
||||
if ( isset($keys[0]) && $keys[0] > $gmt_time )
|
||||
die();
|
||||
|
||||
|
||||
// The cron lock: a unix timestamp from when the cron was spawned.
|
||||
$doing_cron_transient = get_transient( 'doing_cron' );
|
||||
|
||||
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
|
||||
@ -79,7 +81,10 @@ if ( empty( $doing_wp_cron ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
// Check lock
|
||||
/*
|
||||
* The cron lock (a unix timestamp set when the cron was spawned),
|
||||
* must match $doing_wp_cron (the "key").
|
||||
*/
|
||||
if ( $doing_cron_transient != $doing_wp_cron )
|
||||
return;
|
||||
|
||||
|
@ -225,8 +225,11 @@ function spawn_cron( $gmt_time = 0 ) {
|
||||
return;
|
||||
|
||||
/*
|
||||
* multiple processes on multiple web servers can run this code concurrently
|
||||
* try to make this as atomic as possible by setting doing_cron switch
|
||||
* Get the cron lock, which is a unix timestamp of when the last cron was spawned
|
||||
* and has not finished running.
|
||||
*
|
||||
* Multiple processes on multiple web servers can run this code concurrently,
|
||||
* this lock attempts to make spawning as atomic as possible.
|
||||
*/
|
||||
$lock = get_transient('doing_cron');
|
||||
|
||||
@ -266,6 +269,7 @@ function spawn_cron( $gmt_time = 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the cron lock with the current unix timestamp, when the cron is being spawned.
|
||||
$doing_wp_cron = sprintf( '%.22F', $gmt_time );
|
||||
set_transient( 'doing_cron', $doing_wp_cron );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user