WP_Upgrader::create_lock()
Creates a lock using WordPress options.
Method of the class: WP_Upgrader{}
No Hooks.
Return
true|false
. False if a lock couldn't be created or if the lock is still valid. True otherwise.
Usage
$result = WP_Upgrader::create_lock( $lock_name, $release_timeout );
- $lock_name(string) (required)
- The name of this unique lock.
- $release_timeout(int)
- The duration in seconds to respect an existing lock.
Default: 1 hour
Notes
- Global. wpdb. $wpdb The WordPress database abstraction object.
Changelog
Since 4.5.0 | Introduced. |
WP_Upgrader::create_lock() WP Upgrader::create lock code WP 6.5.2
public static function create_lock( $lock_name, $release_timeout = null ) { global $wpdb; if ( ! $release_timeout ) { $release_timeout = HOUR_IN_SECONDS; } $lock_option = $lock_name . '.lock'; // Try to lock. $lock_result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", $lock_option, time() ) ); if ( ! $lock_result ) { $lock_result = get_option( $lock_option ); // If a lock couldn't be created, and there isn't a lock, bail. if ( ! $lock_result ) { return false; } // Check to see if the lock is still valid. If it is, bail. if ( $lock_result > ( time() - $release_timeout ) ) { return false; } // There must exist an expired lock, clear it and re-gain it. WP_Upgrader::release_lock( $lock_name ); return WP_Upgrader::create_lock( $lock_name, $release_timeout ); } // Update the lock, as by this point we've definitely got a lock, just need to fire the actions. update_option( $lock_option, time() ); return true; }