class MemcacheAdminSubscriber in Memcache API and Integration 8.2
Memcache Admin Subscriber.
Hierarchy
- class \Drupal\memcache_admin\EventSubscriber\MemcacheAdminSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface uses StringTranslationTrait
Expanded class hierarchy of MemcacheAdminSubscriber
1 string reference to 'MemcacheAdminSubscriber'
- memcache_admin.services.yml in memcache_admin/
memcache_admin.services.yml - memcache_admin/memcache_admin.services.yml
1 service uses MemcacheAdminSubscriber
File
- memcache_admin/
src/ EventSubscriber/ MemcacheAdminSubscriber.php, line 17
Namespace
Drupal\memcache_admin\EventSubscriberView source
class MemcacheAdminSubscriber implements EventSubscriberInterface {
use StringTranslationTrait;
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = [
'displayStatistics',
];
return $events;
}
/**
* Display statistics on page.
*/
public function displayStatistics(FilterResponseEvent $event) {
$user = \Drupal::currentUser();
if ($user
->id() == 0) {
// Suppress for the above criteria.
}
else {
$response = $event
->getResponse();
// Don't call theme() during shutdown if the registry has been rebuilt
// (such as when enabling/disabling modules on admin/build/modules) as
// things break.
// Instead, simply exit without displaying admin statistics for this page
// load. See http://drupal.org/node/616282 for discussion.
// @todo make sure this is not still a requirement.
// @codingStandardsIgnoreStart
// if (!function_exists('theme_get_registry') || !theme_get_registry()) {
// return;
// }.
// @codingStandardsIgnoreEnd
// Try not to break non-HTML pages.
if ($response instanceof HtmlResponse) {
// This should only apply to page content.
if (stripos($response->headers
->get('content-type'), 'text/html') !== FALSE) {
$show_stats = \Drupal::config('memcache_admin.settings')
->get('show_memcache_statistics');
if ($show_stats && $user
->hasPermission('access memcache statistics')) {
$output = '';
$memcache = \Drupal::service('memcache.factory')
->get(NULL, TRUE);
$memcache_stats = $memcache
->requestStats();
if (!empty($memcache_stats['ops'])) {
foreach ($memcache_stats['ops'] as $row => $stats) {
$memcache_stats['ops'][$row][0] = new HtmlEscapedText($stats[0]);
$memcache_stats['ops'][$row][1] = number_format($stats[1], 2);
$hits = number_format($this
->statsPercent($stats[2], $stats[3]), 1);
$misses = number_format($this
->statsPercent($stats[3], $stats[2]), 1);
$memcache_stats['ops'][$row][2] = number_format($stats[2]) . " ({$hits}%)";
$memcache_stats['ops'][$row][3] = number_format($stats[3]) . " ({$misses}%)";
}
$build = [
'#theme' => 'table',
'#header' => [
$this
->t('operation'),
$this
->t('total ms'),
$this
->t('total hits'),
$this
->t('total misses'),
],
'#rows' => $memcache_stats['ops'],
];
$output .= \Drupal::service('renderer')
->renderRoot($build);
}
if (!empty($memcache_stats['all'])) {
$build = [
'#type' => 'table',
'#header' => [
$this
->t('ms'),
$this
->t('operation'),
$this
->t('bin'),
$this
->t('key'),
$this
->t('status'),
],
];
foreach ($memcache_stats['all'] as $row => $stats) {
$build[$row]['ms'] = [
'#plain_text' => $stats[0],
];
$build[$row]['operation'] = [
'#plain_text' => $stats[1],
];
$build[$row]['bin'] = [
'#plain_text' => $stats[2],
];
$build[$row]['key'] = [
'#separator' => ' | ',
];
foreach (explode('\\n', $stats[3]) as $akey) {
$build[$row]['key']['child'][]['#plain_text'] = $akey;
}
$build[$row]['status'] = [
'#plain_text' => $stats[4],
];
}
$output .= \Drupal::service('renderer')
->renderRoot($build);
}
if (!empty($output)) {
$response
->setContent($response
->getContent() . '<div id="memcache-devel"><h2>' . $this
->t('Memcache statistics') . '</h2>' . $output . '</div>');
}
}
}
}
}
}
/**
* Helper function. Calculate a percentage.
*/
private function statsPercent($a, $b) {
if ($a == 0) {
return 0;
}
elseif ($b == 0) {
return 100;
}
else {
return $a / ($a + $b) * 100;
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MemcacheAdminSubscriber:: |
public | function | Display statistics on page. | |
MemcacheAdminSubscriber:: |
public static | function | Returns an array of event names this subscriber wants to listen to. | |
MemcacheAdminSubscriber:: |
private | function | Helper function. Calculate a percentage. | |
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. |