mirror of
git://develop.git.wordpress.org/
synced 2025-01-17 21:08:44 +01:00
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,7 +64,9 @@ $gmt_time = microtime( true );
|
|||||||
if ( isset($keys[0]) && $keys[0] > $gmt_time )
|
if ( isset($keys[0]) && $keys[0] > $gmt_time )
|
||||||
die();
|
die();
|
||||||
|
|
||||||
$doing_cron_transient = get_transient( 'doing_cron');
|
|
||||||
|
// 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.
|
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
|
||||||
if ( empty( $doing_wp_cron ) ) {
|
if ( empty( $doing_wp_cron ) ) {
|
||||||
@ -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 )
|
if ( $doing_cron_transient != $doing_wp_cron )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -225,9 +225,12 @@ function spawn_cron( $gmt_time = 0 ) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* multiple processes on multiple web servers can run this code concurrently
|
* Get the cron lock, which is a unix timestamp of when the last cron was spawned
|
||||||
* try to make this as atomic as possible by setting doing_cron switch
|
* 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');
|
$lock = get_transient('doing_cron');
|
||||||
|
|
||||||
if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS )
|
if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS )
|
||||||
@ -266,6 +269,7 @@ function spawn_cron( $gmt_time = 0 ) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the cron lock with the current unix timestamp, when the cron is being spawned.
|
||||||
$doing_wp_cron = sprintf( '%.22F', $gmt_time );
|
$doing_wp_cron = sprintf( '%.22F', $gmt_time );
|
||||||
set_transient( 'doing_cron', $doing_wp_cron );
|
set_transient( 'doing_cron', $doing_wp_cron );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user