TYPO3  7.6
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Attributes | List of all members
SimpleLockStrategy Class Reference
Inheritance diagram for SimpleLockStrategy:
LockingStrategyInterface

Public Member Functions

 __construct ($subject)
 
 init ($loops=0, $step=0)
 
 __destruct ()
 
 release ()
 
 isAcquired ()
 
 acquire ($mode=self::LOCK_CAPABILITY_EXCLUSIVE)
 
 destroy ()
 

Static Public Member Functions

static getCapabilities ()
 
static getPriority ()
 

Public Attributes

const FILE_LOCK_FOLDER = 'typo3temp/locks/'
 
- Public Attributes inherited from LockingStrategyInterface
const LOCK_CAPABILITY_EXCLUSIVE = 1
 
const LOCK_CAPABILITY_SHARED = 2
 
const LOCK_CAPABILITY_NOBLOCK = 4
 

Protected Attributes

 $filePath
 
 $isAcquired = false
 
 $loops = 150
 
 $step = 200
 

Detailed Description

Simple file locking

Definition at line 24 of file SimpleLockStrategy.php.

Constructor & Destructor Documentation

__construct (   $subject)
Parameters
string$subjectID to identify this lock in the system
Exceptions
LockCreateExceptionif the lock could not be created

Implements LockingStrategyInterface.

Definition at line 52 of file SimpleLockStrategy.php.

References GeneralUtility\mkdir().

__destruct ( )

Destructor: Releases lock automatically when instance is destroyed and release resources

Definition at line 87 of file SimpleLockStrategy.php.

References SimpleLockStrategy\release().

Member Function Documentation

acquire (   $mode = self::LOCK_CAPABILITY_EXCLUSIVE)

Try to acquire a lock

Parameters
int$modeLOCK_CAPABILITY_EXCLUSIVE or self::LOCK_CAPABILITY_NOBLOCK
Returns
bool Returns TRUE if the lock was acquired successfully
Exceptions
LockAcquireWouldBlockException

Implements LockingStrategyInterface.

Definition at line 142 of file SimpleLockStrategy.php.

References SimpleLockStrategy\$isAcquired, SimpleLockStrategy\$loops, GeneralUtility\fixPermissions(), and SimpleLockStrategy\isAcquired().

destroy ( )

Destroys the resource associated with the lock

Returns
void

Implements LockingStrategyInterface.

Definition at line 194 of file SimpleLockStrategy.php.

static getCapabilities ( )
static
Returns
int LOCK_CAPABILITY_* elements combined with bit-wise OR

Implements LockingStrategyInterface.

Definition at line 130 of file SimpleLockStrategy.php.

static getPriority ( )
static
Returns
int Returns a priority for the method. 0 to 100, 100 is highest

Implements LockingStrategyInterface.

Definition at line 184 of file SimpleLockStrategy.php.

init (   $loops = 0,
  $step = 0 
)
Parameters
int$loopsNumber of times a locked resource is tried to be acquired.
int$stepMilliseconds after lock acquire is retried. $loops * $step results in the maximum delay of a lock.
Returns
void

Definition at line 77 of file SimpleLockStrategy.php.

References SimpleLockStrategy\$loops, and SimpleLockStrategy\$step.

isAcquired ( )

Get status of this lock

Returns
bool Returns TRUE if lock is acquired by this locker, FALSE otherwise

Implements LockingStrategyInterface.

Definition at line 122 of file SimpleLockStrategy.php.

References SimpleLockStrategy\$isAcquired.

Referenced by SimpleLockStrategy\acquire(), and SimpleLockStrategy\release().

release ( )

Release the lock

Returns
bool Returns TRUE on success or FALSE on failure

Implements LockingStrategyInterface.

Definition at line 97 of file SimpleLockStrategy.php.

References SimpleLockStrategy\isAcquired(), GeneralUtility\isAllowedAbsPath(), and GeneralUtility\isFirstPartOfStr().

Referenced by SimpleLockStrategy\__destruct().

Member Data Documentation

$filePath
protected

Definition at line 31 of file SimpleLockStrategy.php.

$isAcquired = false
protected
$loops = 150
protected

Definition at line 41 of file SimpleLockStrategy.php.

Referenced by SimpleLockStrategy\acquire(), and SimpleLockStrategy\init().

$step = 200
protected

Definition at line 46 of file SimpleLockStrategy.php.

Referenced by SimpleLockStrategy\init().

const FILE_LOCK_FOLDER = 'typo3temp/locks/'

Definition at line 26 of file SimpleLockStrategy.php.