class SimplesitemapQueue in Simple XML sitemap 8.3
Same name and namespace in other branches
- 4.x src/Queue/SimpleSitemapQueue.php \Drupal\simple_sitemap\Queue\SimpleSitemapQueue
Class SimplesitemapQueue @package Drupal\simple_sitemap\Queue
Hierarchy
- class \Drupal\Core\Queue\DatabaseQueue implements QueueGarbageCollectionInterface, ReliableQueueInterface uses DependencySerializationTrait
- class \Drupal\simple_sitemap\Queue\SimplesitemapQueue
Expanded class hierarchy of SimplesitemapQueue
1 string reference to 'SimplesitemapQueue'
1 service uses SimplesitemapQueue
File
- src/
Queue/ SimplesitemapQueue.php, line 13
Namespace
Drupal\simple_sitemap\QueueView source
class SimplesitemapQueue extends DatabaseQueue {
/**
* @var \Drupal\Component\Datetime\Time
*/
protected $time;
/**
* SimplesitemapQueue constructor.
* @param $name
* @param \Drupal\Core\Database\Connection $connection
* @param \Drupal\Component\Datetime\Time $time
*/
public function __construct($name, Connection $connection, Time $time) {
parent::__construct($name, $connection);
$this->time = $time;
}
/**
* 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;
}
/**
* Gets a simple_sitemap queue item in a very efficient way.
*
* @return \Generator
* A queue item object with at least the following properties:
* - data: the same as what what passed into createItem().
* - item_id: the unique ID returned from createItem().
* - created: timestamp when the item was put into the queue.
*
* @see \Drupal\Core\Queue\QueueInterface::claimItem
*/
public function yieldItem() {
try {
$query = $this->connection
->query('SELECT data, item_id FROM {queue} q WHERE name = :name ORDER BY item_id ASC', [
':name' => $this->name,
]);
while ($item = $query
->fetchObject()) {
$item->data = unserialize($item->data);
(yield $item);
}
} catch (\Exception $e) {
$this
->catchException($e);
}
}
public function createItems($data_sets) {
$try_again = FALSE;
try {
$id = $this
->doCreateItems($data_sets);
} catch (\Exception $e) {
// If there was an exception, try to create the table.
if (!($try_again = $this
->ensureTableExists())) {
// If the exception happened for other reason than the missing table,
// propagate the exception.
throw $e;
}
}
// Now that the table has been created, try again if necessary.
if ($try_again) {
$id = $this
->doCreateItems($data_sets);
}
return $id;
}
protected function doCreateItems($data_sets) {
$query = $this->connection
->insert(static::TABLE_NAME)
->fields([
'name',
'data',
'created',
]);
foreach ($data_sets as $i => $data) {
$query
->values([
$this->name,
serialize($data),
$this->time
->getRequestTime(),
]);
}
return $query
->execute();
}
public function deleteItems($item_ids) {
try {
$this->connection
->delete(static::TABLE_NAME)
->condition('item_id', $item_ids, 'IN')
->execute();
} catch (\Exception $e) {
$this
->catchException($e);
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DatabaseQueue:: |
protected | property | The database connection. | |
DatabaseQueue:: |
protected | property | The name of the queue this instance is working with. | |
DatabaseQueue:: |
protected | function | Act on an exception when queue might be stale. | |
DatabaseQueue:: |
public | function |
Adds a queue item and store it directly to the queue. Overrides QueueInterface:: |
|
DatabaseQueue:: |
public | function |
Creates a queue. Overrides QueueInterface:: |
|
DatabaseQueue:: |
public | function |
Deletes a finished item from the queue. Overrides QueueInterface:: |
|
DatabaseQueue:: |
public | function |
Deletes a queue and every item in the queue. Overrides QueueInterface:: |
|
DatabaseQueue:: |
protected | function | Adds a queue item and store it directly to the queue. | |
DatabaseQueue:: |
protected | function | Check if the table exists and create it if not. | |
DatabaseQueue:: |
public | function |
Cleans queues of garbage. Overrides QueueGarbageCollectionInterface:: |
|
DatabaseQueue:: |
public | function |
Retrieves the number of items in the queue. Overrides QueueInterface:: |
|
DatabaseQueue:: |
public | function |
Releases an item that the worker could not process. Overrides QueueInterface:: |
|
DatabaseQueue:: |
public | function | Defines the schema for the queue table. | |
DatabaseQueue:: |
constant | The database table name. | ||
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
SimplesitemapQueue:: |
protected | property | ||
SimplesitemapQueue:: |
public | function |
Overrides \Drupal\Core\Queue\DatabaseQueue::claimItem(). Overrides DatabaseQueue:: |
|
SimplesitemapQueue:: |
public | function | ||
SimplesitemapQueue:: |
public | function | ||
SimplesitemapQueue:: |
protected | function | ||
SimplesitemapQueue:: |
public | function | Gets a simple_sitemap queue item in a very efficient way. | |
SimplesitemapQueue:: |
public | function |
SimplesitemapQueue constructor. Overrides DatabaseQueue:: |