--- /dev/null
+{% extends "base.htm" %}
+
+{% block meta %}
+ <meta name="robots" value="noindex,nofollow"/>
+{% endblock %}
+
+{%block title %}phinde status{% endblock %}
+
+{% block maincontent %}
+<div class="container">
+ <div class="row">
+ <div class="span6 offset3">
+
+<h1>phinde status</h1>
+<table class="table table-striped">
+ <thead>
+ <tr>
+ <th>Item</th>
+ <th>Number</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Elasticsearch documents</td>
+ <td>{{esDocs}}</td>
+ </tr>
+ <tr>
+ <td>Open tasks</td>
+ <td>{{gearStatus.tasks}}</td>
+ </tr>
+ <tr>
+ <td>Tasks being processed</td>
+ <td>{{gearStatus.processing}}</td>
+ </tr>
+ <tr>
+ <td>Task workers</td>
+ <td>{{gearStatus.workers}}</td>
+ </tr>
+ </tbody>
+</table>
+
+ </div>
+ </div>
+</div>
+{% endblock %}
$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)) {
{
$this->gmclient = new \GearmanClient();
$this->gmclient->addServer('127.0.0.1');
+ $this->queueName = $GLOBALS['phinde']['queuePrefix'] . 'phinde_process';
}
public function addToProcessList($linkUrl, $actions)
);
$this->gmclient->doBackground(
- $GLOBALS['phinde']['queuePrefix'] . 'phinde_process',
+ $this->queueName,
serialize(
array(
'url' => $linkUrl,
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],
+ );
+ }
}
?>
--- /dev/null
+<?php
+namespace phinde;
+require 'www-header.php';
+
+$es = new Elasticsearch($GLOBALS['phinde']['elasticsearch']);
+$esDocs = $es->countDocuments();
+
+$queue = new Queue();
+$gearStatus = $queue->getServerStatus();
+
+render(
+ 'status',
+ array(
+ 'esDocs' => $esDocs,
+ 'gearStatus' => $gearStatus,
+ )
+);
+?>