From 5bfc1e9094e2a67bad534f7380b1b6b20fe13ef9 Mon Sep 17 00:00:00 2001
From: Kevin Morris <kevr@0cost.org>
Date: Fri, 15 Oct 2021 13:18:58 -0700
Subject: [PATCH] Revert "fix(PHP): sanitize and produce metrics at shutdown"

This reverts commit 22b3af61b568732861be17e9759be68715a709fb.
---
 web/html/index.php          | 24 +++++++++++++++++++++--
 web/lib/metricfuncs.inc.php | 38 -------------------------------------
 2 files changed, 22 insertions(+), 40 deletions(-)

diff --git a/web/html/index.php b/web/html/index.php
index 990469303..82a44c55b 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -13,8 +13,28 @@ $query_string = $_SERVER['QUERY_STRING'];
 
 // If no options.cache is configured, we no-op metric storage operations.
 $is_cached = defined('EXTENSION_LOADED_APC') || defined('EXTENSION_LOADED_MEMCACHE');
-if ($is_cached)
-	register_shutdown_function('update_metrics');
+if ($is_cached) {
+	$method = $_SERVER['REQUEST_METHOD'];
+	// We'll always add +1 to our total request count to this $path,
+	// unless this path == /metrics.
+	if ($path !== "/metrics")
+		add_metric("http_requests_count", $method, $path);
+
+	// Extract $type out of $query_string, if we can.
+	$type = null;
+	$query = array();
+	if ($query_string)
+		parse_str($query_string, $query);
+	$type = $query['type'];
+
+	// Only store RPC metrics for valid types.
+	$good_types = [
+		"info", "multiinfo", "search", "msearch",
+		"suggest", "suggest-pkgbase", "get-comment-form"
+	];
+	if ($path === "/rpc" && in_array($type, $good_types))
+		add_metric("api_requests_count", $method, $path, $type);
+}
 
 if (config_get_bool('options', 'enable-maintenance') && (empty($tokens[1]) || ($tokens[1] != "css" && $tokens[1] != "images"))) {
 	if (!in_array($_SERVER['REMOTE_ADDR'], explode(" ", config_get('options', 'maintenance-exceptions')))) {
diff --git a/web/lib/metricfuncs.inc.php b/web/lib/metricfuncs.inc.php
index 7ebb59be8..acfc30d7d 100644
--- a/web/lib/metricfuncs.inc.php
+++ b/web/lib/metricfuncs.inc.php
@@ -13,44 +13,6 @@ use \Prometheus\RenderTextFormat;
 // and will start again at 0 if it's restarted.
 $registry = new CollectorRegistry(new InMemory());
 
-function update_metrics() {
-	// With no code given to http_response_code, it gets the current
-	// response code set (via http_response_code or header).
-	if(http_response_code() == 404)
-		return;
-
-	$path = $_SERVER['PATH_INFO'];
-	$method = $_SERVER['REQUEST_METHOD'];
-	$query_string = $_SERVER['QUERY_STRING'];
-
-	// If $path is at least 1 character, strip / off the end.
-	// This turns $paths like '/packages/' into '/packages'.
-	if (strlen($path) > 1)
-		$path = rtrim($path, "/");
-
-	// We'll always add +1 to our total request count to this $path,
-	// unless this path == /metrics.
-	if ($path !== "/metrics")
-		add_metric("http_requests_count", $method, $path);
-
-	// Extract $type out of $query_string, if we can.
-	$type = null;
-	$query = array();
-	if ($query_string)
-		parse_str($query_string, $query);
-
-	if (array_key_exists("type", $query))
-		$type = $query["type"];
-
-	// Only store RPC metrics for valid types.
-	$good_types = [
-		"info", "multiinfo", "search", "msearch",
-		"suggest", "suggest-pkgbase", "get-comment-form"
-	];
-	if ($path === "/rpc" && in_array($type, $good_types))
-		add_metric("api_requests_count", $method, $path, $type);
-}
-
 function add_metric($anchor, $method, $path, $type = null) {
 
 	global $registry;
-- 
GitLab