Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Queue/Batch.php \Drupal\Core\Queue\Batch
  2. 9 core/lib/Drupal/Core/Queue/Batch.php \Drupal\Core\Queue\Batch

Defines a batch queue handler used by the Batch API.

This implementation:

  • Ensures FIFO ordering.
  • Allows an item to be repeatedly claimed until it is actually deleted (no notion of lease time or 'expire' date), to allow multipass operations.

Stale items from failed batches are cleaned from the {queue} table on cron using the 'created' date.

Hierarchy

Expanded class hierarchy of Batch

Related topics

File

core/lib/Drupal/Core/Queue/Batch.php, line 18

Namespace

Drupal\Core\Queue
View source
class Batch extends DatabaseQueue {

  /**
   * Overrides \Drupal\Core\Queue\DatabaseQueue::claimItem().
   *
   * Unlike \Drupal\Core\Queue\DatabaseQueue::claimItem(), this method provides
   * a default lease time of 0 (no expiration) instead of 30. This allows the
   * item to be claimed repeatedly until it is deleted.
   */
  public function claimItem($lease_time = 0) {
    try {
      $item = $this->connection
        ->queryRange('SELECT [data], [item_id] FROM {queue} q WHERE [name] = :name ORDER BY [item_id] ASC', 0, 1, [
        ':name' => $this->name,
      ])
        ->fetchObject();
      if ($item) {
        $item->data = unserialize($item->data);
        return $item;
      }
    } catch (\Exception $e) {
      $this
        ->catchException($e);
    }
    return FALSE;
  }

  /**
   * Retrieves all remaining items in the queue.
   *
   * This is specific to Batch API and is not part of the
   * \Drupal\Core\Queue\QueueInterface.
   *
   * @return array
   *   An array of queue items.
   */
  public function getAllItems() {
    $result = [];
    try {
      $items = $this->connection
        ->query('SELECT [data] FROM {queue} q WHERE [name] = :name ORDER BY [item_id] ASC', [
        ':name' => $this->name,
      ])
        ->fetchAll();
      foreach ($items as $item) {
        $result[] = unserialize($item->data);
      }
    } catch (\Exception $e) {
      $this
        ->catchException($e);
    }
    return $result;
  }

}

Members

Name Modifiers Type Descriptionsort descending Overrides
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::$_entityStorages protected property
DatabaseQueue::catchException protected function Act on an exception when queue might be stale.
DatabaseQueue::createItem public function Adds a queue item and store it directly to the queue. Overrides QueueInterface::createItem
DatabaseQueue::doCreateItem protected function Adds a queue item and store it directly to the queue.
DatabaseQueue::ensureTableExists protected function Check if the table exists and create it if not.
DatabaseQueue::garbageCollection public function Cleans queues of garbage. Overrides QueueGarbageCollectionInterface::garbageCollection
DatabaseQueue::__construct public function Constructs a \Drupal\Core\Queue\DatabaseQueue object.
DatabaseQueue::createQueue public function Creates a queue. Overrides QueueInterface::createQueue
DatabaseQueue::schemaDefinition public function Defines the schema for the queue table.
DatabaseQueue::delayItem public function Delay an item so it runs in the future. Overrides DelayableQueueInterface::delayItem
DatabaseQueue::deleteItem public function Deletes a finished item from the queue. Overrides QueueInterface::deleteItem
DatabaseQueue::deleteQueue public function Deletes a queue and every item in the queue. Overrides QueueInterface::deleteQueue
Batch::claimItem public function Overrides \Drupal\Core\Queue\DatabaseQueue::claimItem(). Overrides DatabaseQueue::claimItem
DatabaseQueue::releaseItem public function Releases an item that the worker could not process. Overrides QueueInterface::releaseItem
Batch::getAllItems public function Retrieves all remaining items in the queue.
DatabaseQueue::numberOfItems public function Retrieves the number of items in the queue. Overrides QueueInterface::numberOfItems
DatabaseQueue::$connection protected property The database connection.
DatabaseQueue::TABLE_NAME constant The database table name.
DatabaseQueue::$name protected property The name of the queue this instance is working with.