Static queue implementation.
This allows processes that rely on the Queue interface to be executed
immediately and all in one page request. The queue data resides in memory.
It should only be used for items that will be queued and dequeued within the
same page request.
Hierarchy
Expanded class hierarchy of MemoryQueue
Related topics
1 string reference to 'MemoryQueue'
File
core/modules/system/system.queue.inc , line 295
Queue functionality.
View source class MemoryQueue implements BackdropQueueInterface {
protected $queue ;
protected $id_sequence ;
public function __construct ($name ) {
$this ->queue = array ();
$this ->id_sequence = 0 ;
}
public function createItem ($data ) {
$item = new stdClass ();
$item ->item_id = $this ->id_sequence ++;
$item ->data = $data ;
$item ->created = time ();
$item ->expire = 0 ;
$this ->queue [$item ->item_id ] = $item ;
return TRUE ;
}
public function numberOfItems () {
return count ($this ->queue );
}
public function claimItem ($lease_time = 30 ) {
foreach ($this ->queue as $key => $item ) {
if ($item ->expire == 0 ) {
$item ->expire = time () + $lease_time ;
$this ->queue [$key ] = $item ;
return $item ;
}
}
return FALSE ;
}
public function deleteItem ($item ) {
unset ($this ->queue [$item ->item_id ]);
}
public function releaseItem ($item ) {
if (isset ($this ->queue [$item ->item_id ]) && $this ->queue [$item ->item_id ]->expire != 0 ) {
$this ->queue [$item ->item_id ]->expire = 0 ;
return TRUE ;
}
return FALSE ;
}
public function createQueue () {
}
public function deleteQueue () {
$this ->queue = array ();
$this ->id_sequence = 0 ;
}
}
Members