From b0411b46c44697e40832a8de5e3830479e04d86b Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Wed, 6 Feb 2019 07:37:45 +0000
Subject: [PATCH] Separate config options to display the worker jobs per minute

---
 config/defaults.config.php |  4 ++++
 src/Core/Worker.php        | 24 ++++++++++++++----------
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/config/defaults.config.php b/config/defaults.config.php
index 42533f5ad2..18859ee103 100644
--- a/config/defaults.config.php
+++ b/config/defaults.config.php
@@ -393,6 +393,10 @@ return [
 		// Number of worker tasks that are fetched in a single query.
 		'worker_fetch_limit' => 1,
 
+		// worker_jpm (Boolean)
+		// If enabled, it prints out the jobs per minute.
+		'worker_jpm' => false,
+
 		// worker_load_exponent (Integer)
 		// Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load.
 		// For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.
diff --git a/src/Core/Worker.php b/src/Core/Worker.php
index 00b22c7885..cd16272443 100644
--- a/src/Core/Worker.php
+++ b/src/Core/Worker.php
@@ -657,6 +657,19 @@ class Worker
 
 			$processlist = '';
 
+			if (Config::get('system', 'worker_jpm')) {
+				$intervals = [1, 10, 60];
+				$jobs_per_minute = [];
+				foreach ($intervals as $interval) {
+					$jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE");
+					if ($job = DBA::fetch($jobs)) {
+						$jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0);
+					}
+					DBA::close($jobs);
+				}
+				$processlist = ' - jpm: '.implode('/', $jobs_per_minute);
+			}
+
 			if (Config::get('system', 'worker_debug')) {
 				// Create a list of queue entries grouped by their priority
 				$listitem = [];
@@ -686,16 +699,7 @@ class Worker
 				}
 				DBA::close($entries);
 
-				$intervals = [1, 10, 60];
-				$jobs_per_minute = [];
-				foreach ($intervals as $interval) {
-					$jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE");
-					if ($job = DBA::fetch($jobs)) {
-						$jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0);
-					}
-					DBA::close($jobs);
-				}
-				$processlist = ' - jpm: '.implode('/', $jobs_per_minute).' ('.implode(', ', $listitem).')';
+				$processlist .= ' ('.implode(', ', $listitem).')';
 			}
 
 			$entries = self::totalEntries();
-- 
2.39.5