class Batch
Same name and namespace in other branches
- 11.x core/lib/Drupal/Core/Queue/Batch.php \Drupal\Core\Queue\Batch
- 9 core/lib/Drupal/Core/Queue/Batch.php \Drupal\Core\Queue\Batch
- 10 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
- class \Drupal\Core\Queue\DatabaseQueue implements \Drupal\Core\Queue\ReliableQueueInterface, \Drupal\Core\Queue\QueueGarbageCollectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait
- class \Drupal\Core\Queue\Batch extends \Drupal\Core\Queue\DatabaseQueue
Expanded class hierarchy of Batch
Related topics
8 string references to 'Batch'
- authorize.php in core/
authorize.php - Administrative script for running authorized file operations.
- BatchTestSimpleForm::submitForm in core/
modules/ system/ tests/ modules/ batch_test/ src/ Form/ BatchTestSimpleForm.php - Form submission handler.
- drupal6.php in core/
modules/ migrate_drupal/ tests/ fixtures/ drupal6.php - A database agnostic dump for testing purposes.
- drupal7.php in core/
modules/ migrate_drupal/ tests/ fixtures/ drupal7.php - A database agnostic dump for testing purposes.
- hook_install_tasks in core/
lib/ Drupal/ Core/ Extension/ module.api.php - Return an array of tasks to be performed by an installation profile.
File
-
core/
lib/ Drupal/ Core/ Queue/ Batch.php, line 18
Namespace
Drupal\Core\QueueView 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;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.