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

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.