class Memory in Drupal 10
Same name and namespace in other branches
- 8 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 "undelayed" 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 \Drupal\Core\Queue\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;
}
}