public function TomeStaticQueueWorker::processItem in Tome 8
Works on a single queue item.
Parameters
mixed $data: The data that was passed to \Drupal\Core\Queue\QueueInterface::createItem() when the item was queued.
Throws
\Drupal\Core\Queue\RequeueException Processing is not yet finished. This will allow another process to claim the item immediately.
\Exception A QueueWorker plugin may throw an exception to indicate there was a problem. The cron process will log the exception, and leave the item in the queue to be processed again later.
\Drupal\Core\Queue\SuspendQueueException More specifically, a SuspendQueueException should be thrown when a QueueWorker plugin is aware that the problem will affect all subsequent workers of its queue. For example, a callback that makes HTTP requests may find that the remote server is not responding. The cron process will behave as with a normal Exception, and in addition will not attempt to process further items from the current item's queue during the current cron run.
Overrides QueueWorkerInterface::processItem
See also
\Drupal\Core\Cron::processQueues()
File
- modules/
tome_static/ modules/ tome_static_cron/ src/ Plugin/ QueueWorker/ TomeStaticQueueWorker.php, line 121
Class
- TomeStaticQueueWorker
- Process a queue of static paths.
Namespace
Drupal\tome_static_cron\Plugin\QueueWorkerCode
public function processItem($data) {
$base_url = $data['base_url'];
$state_invoke_paths = $this->state
->get(self::STATE_KEY_INVOKE_PATHS, []);
if (isset($data['action']) && $data['action'] === 'process_invoke_paths') {
$state_invoke_paths = $this->static
->exportPaths($state_invoke_paths);
_tome_static_cron_queue_paths($state_invoke_paths, $base_url);
$this->state
->set(TomeStaticQueueWorker::STATE_KEY_INVOKE_PATHS, []);
return;
}
$path = $data['path'];
if ($this->currentRequest) {
$this->static
->prepareStaticDirectory();
$original_params = TomeStaticHelper::setBaseUrl($this->currentRequest, $base_url);
}
$this->requestPreparer
->prepareForRequest();
try {
$invoke_paths = $this->static
->requestPath($path);
} catch (\Exception $e) {
$this->logger
->error('Error when requesting path "' . $path . '"": ' . $e
->getMessage() . ' ' . $e
->getTraceAsString(), []);
$invoke_paths = [];
}
$this->state
->set(self::STATE_KEY_INVOKE_PATHS, array_merge($state_invoke_paths, $invoke_paths));
if ($this->currentRequest) {
TomeStaticHelper::restoreBaseUrl($this->currentRequest, $original_params);
}
}