PersistentDatabaseLockBackend
class PersistentDatabaseLockBackend extends DatabaseLockBackend (View source)
Defines the persistent database lock backend. This backend is global for this Drupal installation.
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. |
from DatabaseLockBackend |
Methods
Waits a short amount of time before a second lock acquire attempt.
Checks if a lock is available for acquiring.
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.
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 PersistentDatabaseLockBackend.
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.