class VarnishPurger in Varnish purger 8.2
Same name and namespace in other branches
- 8 src/Plugin/Purge/Purger/VarnishPurger.php \Drupal\varnish_purger\Plugin\Purge\Purger\VarnishPurger
HTTP Purger.
Plugin annotation
@PurgePurger(
id = "varnish",
label = @Translation("Varnish Purger"),
configform = "\Drupal\varnish_purger\Form\VarnishPurgerForm",
cooldown_time = 0.0,
description = @Translation("Configurable purger that makes HTTP requests for each given invalidation instruction."),
multi_instance = TRUE,
types = {},
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\purge\Plugin\Purge\Purger\PurgerBase implements PurgerInterface uses PurgeLoggerAwareTrait
- class \Drupal\varnish_purger\Plugin\Purge\Purger\VarnishPurgerBase implements PurgerInterface
- class \Drupal\varnish_purger\Plugin\Purge\Purger\VarnishPurger implements PurgerInterface
- class \Drupal\varnish_purger\Plugin\Purge\Purger\VarnishPurgerBase implements PurgerInterface
- class \Drupal\purge\Plugin\Purge\Purger\PurgerBase implements PurgerInterface uses PurgeLoggerAwareTrait
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of VarnishPurger
2 files declare their use of VarnishPurger
- varnish_focal_point_purge.module in modules/
varnish_focal_point_purge/ varnish_focal_point_purge.module - Contains varnish_focal_point_purge.module.
- varnish_image_purge.module in modules/
varnish_image_purge/ varnish_image_purge.module - Contains varnish_image_purge.module.
File
- src/
Plugin/ Purge/ Purger/ VarnishPurger.php, line 22
Namespace
Drupal\varnish_purger\Plugin\Purge\PurgerView source
class VarnishPurger extends VarnishPurgerBase implements PurgerInterface {
const VARNISH_PURGE_CONCURRENCY = 10;
/**
* {@inheritdoc}
*/
public function invalidate(array $invalidations) {
// Prepare a generator for the requests that we will be sending out. Use a
// generator, as the pool implementation will request new item to pass
// thorough the wire once any of the concurrency slots is free.
$requests = function () use ($invalidations) {
$client = $this->client;
$method = $this->settings->request_method;
$logger = $this
->logger();
/* @var $invalidation \Drupal\purge\Plugin\Purge\Invalidation\InvalidationInterface */
foreach ($invalidations as $invalidation) {
$token_data = [
'invalidation' => $invalidation,
];
$uri = $this
->getUri($token_data);
$options = $this
->getOptions($token_data);
(yield function () use ($client, $uri, $method, $options, $invalidation, $logger) {
return $client
->requestAsync($method, $uri, $options)
->then(function ($response) use ($invalidation) {
$invalidation
->setState(InvalidationInterface::SUCCEEDED);
}, function ($reason) use ($invalidation, $uri, $options, $logger) {
$invalidation
->setState(InvalidationInterface::FAILED);
$message = $reason instanceof \Exception ? $reason
->getMessage() : (string) $reason;
// Log as much useful information as we can.
$headers = $options['headers'];
unset($options['headers']);
$debug = json_encode(str_replace("\n", ' ', [
'msg' => $message,
'uri' => $uri,
'method' => $this->settings->request_method,
'guzzle_opt' => $options,
'headers' => $headers,
]));
$logger
->emergency("item failed due @e, details (JSON): @debug", [
'@e' => is_object($reason) ? get_class($reason) : (string) $reason,
'@debug' => $debug,
]);
});
});
}
};
// Prepare a POOL that will make the requests with a given concurrency.
(new Pool($this->client, $requests(), [
'concurrency' => self::VARNISH_PURGE_CONCURRENCY,
]))
->promise()
->wait();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
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 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PurgeLoggerAwareTrait:: |
protected | property | Channel logger. | |
PurgeLoggerAwareTrait:: |
public | function | ||
PurgerBase:: |
protected | property | Unique instance ID for this purger. | |
PurgerBase:: |
protected | property | The runtime measurement counter. | |
PurgerBase:: |
public | function |
Retrieve the unique instance ID for this purger instance. Overrides PurgerInterface:: |
|
PurgerBase:: |
public | function |
Get the runtime measurement counter. Overrides PurgerCapacityDataInterface:: |
|
PurgerBase:: |
public | function |
Route certain type of invalidations to other methods. Overrides PurgerInterface:: |
|
PurgerBase:: |
public | function |
Inject the runtime measurement counter. Overrides PurgerCapacityDataInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
VarnishPurger:: |
public | function |
Invalidate content from external caches. Overrides PurgerInterface:: |
|
VarnishPurger:: |
constant | |||
VarnishPurgerBase:: |
protected | property | ||
VarnishPurgerBase:: |
protected | property | The settings entity holding all configuration. | |
VarnishPurgerBase:: |
protected | property | The token service. | |
VarnishPurgerBase:: |
public static | function |
Creates an instance of the plugin. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
public | function |
The current instance of this purger plugin is about to be deleted. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
public | function |
Get the time in seconds to wait after invalidation. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
protected | function | Retrieve all configured headers that need to be set. | |
VarnishPurgerBase:: |
public | function |
Get the maximum number of invalidations that this purger can process. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
public | function |
Retrieve the user-readable label for this purger instance. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
protected | function | Retrieve the Guzzle connection options to set. | |
VarnishPurgerBase:: |
public | function |
Get the maximum number of seconds, processing a single invalidation takes. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
public | function |
Retrieve the list of supported invalidation types. Overrides PurgerBase:: |
|
VarnishPurgerBase:: |
protected | function | Retrieve the URI to connect to. | |
VarnishPurgerBase:: |
public | function |
Indicates whether your purger utilizes dynamic runtime measurement. Overrides PurgerCapacityDataInterface:: |
|
VarnishPurgerBase:: |
public | function |
Constructs the Varnish purger. Overrides PurgerBase:: |