From cdd1643e68a7a5e96f16f2b5f1214c9152717e08 Mon Sep 17 00:00:00 2001
From: godog <godog@autistici.org>
Date: Wed, 25 Dec 2013 14:57:40 +0000
Subject: [PATCH] add xcache stats reporting

---
 xcache_stats_r2mon.php | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 xcache_stats_r2mon.php

diff --git a/xcache_stats_r2mon.php b/xcache_stats_r2mon.php
new file mode 100644
index 000000000..7e250a150
--- /dev/null
+++ b/xcache_stats_r2mon.php
@@ -0,0 +1,53 @@
+<?php
+
+$EXPORTED_STATS = array(
+  "compiling", "disabled", "misses", "hits", "clogs",
+  "ooms", "errors", "cached", "deleted", "size", "avail"
+);
+
+if (!extension_loaded('XCache')) {
+  trigger_error("xcache not loaded", E_USER_ERROR);
+  header("HTTP/1.1 500 Internal Server Error");
+}
+
+function xcache_type_stats($type) {
+  global $EXPORTED_STATS;
+
+  $total = array();
+  $type_stats = array();
+
+  for ($i = 0; $i < xcache_count($type); $i++) {
+    $type_stats[] = xcache_info($type, $i);
+  }
+
+  foreach($type_stats as $unused => $type_stat) {
+    foreach($type_stat as $k => $v) {
+      if(!in_array($k, $EXPORTED_STATS)) {
+        continue;
+      }
+
+      if(!isset($total[$k])) {
+        $total[$k] = 0;
+      }
+      $total[$k] += $v;
+    }
+  }
+  return $total;
+}
+
+$code_cache_stats = xcache_type_stats(XC_TYPE_PHP);
+$var_cache_stats = xcache_type_stats(XC_TYPE_VAR);
+
+/*
+print var_dump($code_cache_stats);
+print var_dump($var_cache_stats);
+*/
+
+foreach($code_cache_stats as $k => $v) {
+  print "xcache.stat{type=code,what=$k}: $v\n";
+}
+foreach($var_cache_stats as $k => $v) {
+  print "xcache.stat{type=var,what=$k}: $v\n";
+}
+print "xcache.pid: " . getmypid();
+?>
-- 
GitLab