PluginProbe
WANotifier for Forms and Actions / 2.7.13
WANotifier for Forms and Actions v2.7.13
3.1.1 3.1.0 3.0.4 2.7.10 2.7.11 2.7.12 2.7.13 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 3.0.0 3.0.1 3.0.2 3.0.3 trunk 0.1.0 0.1.1 1.0.0 1.0.1 1.0.2 All 67 releases
notifier / libraries / action-scheduler / classes / ActionScheduler_OptionLock.php

ActionScheduler_OptionLock.php in WANotifier for Forms and Actions 2.7.13, at libraries/action-scheduler/classes/ActionScheduler_OptionLock.php

50 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Provide a way to set simple transient locks to block behaviour
5 * for up-to a given duration.
6 *
7 * Class ActionScheduler_OptionLock
8 * @since 3.0.0
9 */
10 class ActionScheduler_OptionLock extends ActionScheduler_Lock {
11
12 /**
13 * Set a lock using options for a given amount of time (60 seconds by default).
14 *
15 * Using an autoloaded option avoids running database queries or other resource intensive tasks
16 * on frequently triggered hooks, like 'init' or 'shutdown'.
17 *
18 * For example, ActionScheduler_QueueRunner->maybe_dispatch_async_request() uses a lock to avoid
19 * calling ActionScheduler_QueueRunner->has_maximum_concurrent_batches() every time the 'shutdown',
20 * hook is triggered, because that method calls ActionScheduler_QueueRunner->store->get_claim_count()
21 * to find the current number of claims in the database.
22 *
23 * @param string $lock_type A string to identify different lock types.
24 * @bool True if lock value has changed, false if not or if set failed.
25 */
26 public function set( $lock_type ) {
27 return update_option( $this->get_key( $lock_type ), time() + $this->get_duration( $lock_type ) );
28 }
29
30 /**
31 * If a lock is set, return the timestamp it was set to expiry.
32 *
33 * @param string $lock_type A string to identify different lock types.
34 * @return bool|int False if no lock is set, otherwise the timestamp for when the lock is set to expire.
35 */
36 public function get_expiration( $lock_type ) {
37 return get_option( $this->get_key( $lock_type ) );
38 }
39
40 /**
41 * Get the key to use for storing the lock in the transient
42 *
43 * @param string $lock_type A string to identify different lock types.
44 * @return string
45 */
46 protected function get_key( $lock_type ) {
47 return sprintf( 'action_scheduler_lock_%s', $lock_type );
48 }
49 }
50