From: Christian Weiske Date: Fri, 11 Nov 2016 19:54:12 +0000 (+0100) Subject: status page X-Git-Tag: v0.2.0~11 X-Git-Url: https://git.cweiske.de/phinde.git/commitdiff_plain/08fc60226f224de87d665aa7c55b6eaa9f66d768?ds=sidebyside status page --- diff --git a/data/templates/status.htm b/data/templates/status.htm new file mode 100644 index 0000000..a5699ef --- /dev/null +++ b/data/templates/status.htm @@ -0,0 +1,45 @@ +{% extends "base.htm" %} + +{% block meta %} + +{% endblock %} + +{%block title %}phinde status{% endblock %} + +{% block maincontent %} +
+
+
+ +

phinde status

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ItemNumber
Elasticsearch documents{{esDocs}}
Open tasks{{gearStatus.tasks}}
Tasks being processed{{gearStatus.processing}}
Task workers{{gearStatus.workers}}
+ +
+
+
+{% endblock %} diff --git a/src/phinde/Elasticsearch.php b/src/phinde/Elasticsearch.php index 9babfee..069cf1f 100644 --- a/src/phinde/Elasticsearch.php +++ b/src/phinde/Elasticsearch.php @@ -58,6 +58,16 @@ class Elasticsearch $r->send(); } + public function countDocuments() + { + $r = new Elasticsearch_Request( + $this->baseUrl . 'document/_count', + \HTTP_Request2::METHOD_GET + ); + $res = $r->send(); + return json_decode($res->getBody())->count; + } + public function search($query, $filters, $site, $page, $perPage, $sort) { if (preg_match_all('#nick:([^ ]*)#', $query, $matches)) { diff --git a/src/phinde/Queue.php b/src/phinde/Queue.php index a58a257..1033d7a 100644 --- a/src/phinde/Queue.php +++ b/src/phinde/Queue.php @@ -9,6 +9,7 @@ class Queue { $this->gmclient = new \GearmanClient(); $this->gmclient->addServer('127.0.0.1'); + $this->queueName = $GLOBALS['phinde']['queuePrefix'] . 'phinde_process'; } public function addToProcessList($linkUrl, $actions) @@ -19,7 +20,7 @@ class Queue ); $this->gmclient->doBackground( - $GLOBALS['phinde']['queuePrefix'] . 'phinde_process', + $this->queueName, serialize( array( 'url' => $linkUrl, @@ -36,5 +37,23 @@ class Queue exit(2); } } + + public function getServerStatus() + { + $cmd = 'gearadmin --status' + . '| grep ' . escapeshellarg($this->queueName); + $line = exec($cmd); + + $parts = preg_split('#\s+#', $line); + if (count($parts) !== 4) { + throw new \Exception('gearadmin status line does not have 4 parts'); + } + + return array( + 'tasks' => $parts[1], + 'processing' => $parts[2], + 'workers' => $parts[3], + ); + } } ?> diff --git a/www/status.php b/www/status.php new file mode 100644 index 0000000..3bc52cf --- /dev/null +++ b/www/status.php @@ -0,0 +1,18 @@ +countDocuments(); + +$queue = new Queue(); +$gearStatus = $queue->getServerStatus(); + +render( + 'status', + array( + 'esDocs' => $esDocs, + 'gearStatus' => $gearStatus, + ) +); +?>