Same name and namespace in other branches
- 8.9.x core/lib/Drupal/Core/Queue/Memory.php \Drupal\Core\Queue\Memory
- 9 core/lib/Drupal/Core/Queue/Memory.php \Drupal\Core\Queue\Memory
Static queue implementation.
This allows "un-delayed" variants of processes relying on the Queue interface. The queue data resides in memory. It should only be used for items that will be queued and dequeued within a given page request.
Hierarchy
- class \Drupal\Core\Queue\Memory implements QueueInterface
Expanded class hierarchy of Memory
Related topics
3 files declare their use of Memory
- CronQueueTest.php in core/
modules/ system/ tests/ src/ Kernel/ System/ CronQueueTest.php - CronTest.php in core/
tests/ Drupal/ Tests/ Core/ CronTest.php - QueueTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Queue/ QueueTest.php
File
- core/
lib/ Drupal/ Core/ Queue/ Memory.php, line 14
Namespace
Drupal\Core\QueueView source
class Memory implements QueueInterface {
/**
* The queue data.
*
* @var array
*/
protected $queue;
/**
* Counter for item ids.
*
* @var int
*/
protected $idSequence;
/**
* Constructs a Memory object.
*
* @param string $name
* An arbitrary string. The name of the queue to work with.
*/
public function __construct($name) {
$this->queue = [];
$this->idSequence = 0;
}
/**
* {@inheritdoc}
*/
public function createItem($data) {
$item = new \stdClass();
$item->item_id = $this->idSequence++;
$item->data = $data;
$item->created = \Drupal::time()
->getCurrentTime();
$item->expire = 0;
$this->queue[$item->item_id] = $item;
return $item->item_id;
}
/**
* {@inheritdoc}
*/
public function numberOfItems() {
return count($this->queue);
}
/**
* {@inheritdoc}
*/
public function claimItem($lease_time = 30) {
foreach ($this->queue as $key => $item) {
if ($item->expire == 0) {
$item->expire = \Drupal::time()
->getCurrentTime() + $lease_time;
$this->queue[$key] = $item;
return $item;
}
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public function deleteItem($item) {
unset($this->queue[$item->item_id]);
}
/**
* {@inheritdoc}
*/
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;
}
/**
* {@inheritdoc}
*/
public function createQueue() {
// Nothing needed here.
}
/**
* {@inheritdoc}
*/
public function deleteQueue() {
$this->queue = [];
$this->idSequence = 0;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Memory:: |
protected | property | Counter for item ids. | |
Memory:: |
protected | property | The queue data. | |
Memory:: |
public | function |
Claims an item in the queue for processing. Overrides QueueInterface:: |
1 |
Memory:: |
public | function |
Adds a queue item and store it directly to the queue. Overrides QueueInterface:: |
|
Memory:: |
public | function |
Creates a queue. Overrides QueueInterface:: |
|
Memory:: |
public | function |
Deletes a finished item from the queue. Overrides QueueInterface:: |
|
Memory:: |
public | function |
Deletes a queue and every item in the queue. Overrides QueueInterface:: |
|
Memory:: |
public | function |
Retrieves the number of items in the queue. Overrides QueueInterface:: |
|
Memory:: |
public | function |
Releases an item that the worker could not process. Overrides QueueInterface:: |
|
Memory:: |
public | function | Constructs a Memory object. |