class MemoryQueue
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 \MemoryQueue implements \DrupalQueueInterface
Expanded class hierarchy of MemoryQueue
Related topics
File
-
modules/
system/ system.queue.inc, line 296
View source
class MemoryQueue implements DrupalQueueInterface {
/**
* The queue data.
*
* @var array
*/
protected $queue;
/**
* Counter for item ids.
*
* @var int
*/
protected $id_sequence;
/**
* Start working with a queue.
*
* @param $name
* Arbitrary string. The name of the queue to work with.
*/
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() {
// Nothing needed here.
}
public function deleteQueue() {
$this->queue = array();
$this->id_sequence = 0;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
MemoryQueue::$id_sequence | protected | property | Counter for item ids. | ||
MemoryQueue::$queue | protected | property | The queue data. | ||
MemoryQueue::claimItem | public | function | Claim an item in the queue for processing. | Overrides DrupalQueueInterface::claimItem | 1 |
MemoryQueue::createItem | public | function | Add a queue item and store it directly to the queue. | Overrides DrupalQueueInterface::createItem | |
MemoryQueue::createQueue | public | function | Create a queue. | Overrides DrupalQueueInterface::createQueue | |
MemoryQueue::deleteItem | public | function | Delete a finished item from the queue. | Overrides DrupalQueueInterface::deleteItem | |
MemoryQueue::deleteQueue | public | function | Delete a queue and every item in the queue. | Overrides DrupalQueueInterface::deleteQueue | |
MemoryQueue::numberOfItems | public | function | Retrieve the number of items in the queue. | Overrides DrupalQueueInterface::numberOfItems | |
MemoryQueue::releaseItem | public | function | Release an item that the worker could not process, so another worker can come in and process it before the timeout expires. |
Overrides DrupalQueueInterface::releaseItem | |
MemoryQueue::__construct | public | function | Start working with a queue. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.