DatabaseLockBackend
class DatabaseLockBackend extends LockBackendAbstract (View source)
Defines the database lock backend. This is the default backend in Drupal.
Constants
| TABLE_NAME |
The database table name. |
Properties
| protected string | $lockId | Current page lock token identifier. |
from LockBackendAbstract |
| protected array | $locks | Existing locks for this page. |
from LockBackendAbstract |
| protected Connection | $database | The database connection. |
Methods
Waits a short amount of time before a second lock acquire attempt.
Acquires a lock.
Checks if a lock is available for acquiring.
Releases the given lock.
Releases all locks for the given lock token identifier.
Check if the semaphore table exists and create it if not.
Normalizes a lock name in order to comply with database limitations.
Defines the schema for the semaphore table.
Details
bool
wait(string $name, int $delay = 30)
Waits a short amount of time before a second lock acquire attempt.
While this method is subject to have a generic implementation in abstract backend implementation, some backends may provide non blocking or less I/O intensive wait mechanism: this is why this method remains on the backend interface.
string
getLockId()
Gets the unique page token for locks.
Locks will be wiped out at the end of each page request on a token basis.
__construct(Connection $database)
Constructs a new DatabaseLockBackend.
bool
acquire(string $name, float $timeout = 30.0)
Acquires a lock.
bool
lockMayBeAvailable(string $name)
Checks if a lock is available for acquiring.
release(string $name)
Releases the given lock.
releaseAll($lock_id = NULL)
Releases all locks for the given lock token identifier.
protected
ensureTableExists()
Check if the semaphore table exists and create it if not.
protected
catchException(Exception $e)
Act on an exception when semaphore might be stale.
If the table does not yet exist, that's fine, but if the table exists and yet the query failed, then the semaphore is stale and the exception needs to propagate.
protected string
normalizeName(string $name)
Normalizes a lock name in order to comply with database limitations.
schemaDefinition()
| internal |
Defines the schema for the semaphore table.