Skip to content
Snippets Groups Projects
Commit f44ad912 authored by Dominik Hebeler's avatar Dominik Hebeler
Browse files

Merge branch...

Merge branch '116-der-status-der-laufenden-worker-wird-noch-nicht-in-die-suche-mit-einbezogen' into 'development'

Resolve "Der Status der laufenden Worker wird noch nicht in die Suche mit einbezogen."

Closes #116

See merge request !120
parents a721f95d 160eee3d
No related branches found
No related tags found
2 merge requests!122Development,!120Resolve "Der Status der laufenden Worker wird noch nicht in die Suche mit einbezogen."
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Redis;
class AdminInterface extends Controller
{
public function index ()
{
# Zunächst einmal die Redis-Verbindung:
$redis = Redis::connection('redisLogs');
# Dann lesen wir alle Server aus:
$member = $redis->smembers('logs.worker');
# Jetzt besorgen wir uns die Daten für jeden Server:
$data = [];
foreach( $member as $mem )
{
$tmp = $redis->hgetall('logs.worker.' . $mem);
$data[$mem] = $tmp;
}
return view('admin')
->with('data', $data)
->with('title', "Admin-Interface-MetaGer");
}
}
......@@ -112,6 +112,8 @@
->with('navbarFocus', 'dienste');
});
Route::get('admin', ['middleware' => 'auth.basic', 'uses' => 'AdminInterface@index']);
Route::get('settings', 'StartpageController@loadSettings');
......
......@@ -2,7 +2,12 @@
namespace App\Providers;
use Queue;
use Log;
use Redis;
use Illuminate\Support\ServiceProvider;
use Illuminate\Queue\Events\JobProcessed;
use Illuminate\Queue\Events\JobProcessing;
class AppServiceProvider extends ServiceProvider
{
......@@ -13,7 +18,36 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
//
# Wir loggen im Redis-System für jede Sekunde des Tages, wie viele Worker aktiv am Laufen waren.
# Dies ist notwendig, damit wir mitbekommen können, ab welchem Zeitpunkt wir zu wenig Worker zur Verfügung haben.
Queue::before(function (JobProcessing $event) {
$this->begin = strtotime(date(DATE_RFC822, mktime(date("H"),date("i"), date("s"), date("m"), date("d"), date("Y"))));
});
Queue::after(function (JobProcessed $event) {
$today = strtotime(date(DATE_RFC822, mktime(0,0,0, date("m"), date("d"), date("Y"))));
$end = strtotime(date(DATE_RFC822, mktime(date("H"),date("i"), date("s"), date("m"), date("d"), date("Y")))) - $today;
$expireAt = strtotime(date(DATE_RFC822, mktime(0,0,0, date("m"), date("d")+1, date("Y"))));
$redis = Redis::connection('redisLogs');
$p = getmypid();
$host = gethostname();
$begin = $this->begin - $today;
$redis->pipeline(function($pipe) use ($p, $expireAt, $host, $begin, $end)
{
for( $i = $begin; $i <= $end; $i++)
{
$pipe->sadd("logs.worker.$host.$i", strval($p));
$pipe->expire("logs.worker.$host.$i", 10);
$pipe->eval("redis.call('hset', 'logs.worker.$host', '$i', redis.call('scard', 'logs.worker.$host.$i'))", 0);
$pipe->sadd("logs.worker", $host);
if( date("H") !== 0 )
{
$pipe->expire("logs.worker.$host", $expireAt);
$pipe->expire("logs.worker", $expireAt);
}
}
});
});
}
/**
......
......@@ -1328,23 +1328,23 @@
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.2",
"version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "d8db871a54619458a805229a057ea2af33c753e8"
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d8db871a54619458a805229a057ea2af33c753e8",
"reference": "d8db871a54619458a805229a057ea2af33c753e8",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1,<0.9.4"
"mockery/mockery": "~0.9.1"
},
"type": "library",
"extra": {
......@@ -1377,7 +1377,7 @@
"mail",
"mailer"
],
"time": "2016-05-01 08:45:47"
"time": "2016-07-08 11:51:25"
},
{
"name": "symfony/console",
......
No preview for this file type
@extends('layouts.subPages')
@section('title', $title )
@section('content')
@foreach( $data as $serverName => $dataPoints )
<div>
<h1>{{ $serverName }}</h1>
<svg width="100%" height="500px">
<!-- Zunächst die Achsen: -->
<!-- Y-Achse -->
<line x1="1%" y1="0" x2="1%" y2="95%" style="stroke:rgb(0,0,0);stroke-width:3" />
<line x1="1%" y1="0" x2="0" y2="3%" style="stroke:rgb(0,0,0);stroke-width:3" />
<line x1="1%" y1="0" x2="2%" y2="3%" style="stroke:rgb(0,0,0);stroke-width:3" />
<!-- Beschriftungen der Y-Achse -->
@for( $y = ((95-0) / 10); $y < ((95-0) / 10) * 10; $y = $y + ((95-0) / 10) )
<line x1="0.5%" y1="{{ $y }}%" x2="1.5%" y2="{{ $y }}%" style="stroke:rgb(0,0,0);stroke-width:1" />
<text x="1.8%" y="{{ $y }}%" fill="black" style="font-size:10px;">{{ 100 - (($y / 95)*100) }}</text>
@endfor
<text x="3%" y="2%" fill="red">Anzahl Worker: x</text>
<!-- X-Achse -->
<line x1="1%" y1="95%" x2="99%" y2="95%" style="stroke:rgb(0,0,0);stroke-width:3" />
<line x1="99%" y1="95%" x2="98%" y2="92%" style="stroke:rgb(0,0,0);stroke-width:3" />
<line x1="99%" y1="95%" x2="98%" y2="98%" style="stroke:rgb(0,0,0);stroke-width:3" />
<!-- Beschriftungen der X-Achse -->
@for( $x = (((99-1) / 24) + 1); $x < 98.9; $x = ($x + ((99-1) / 24)) )
<line x1="{{ $x }}%" y1="93%" x2="{{ $x }}%" y2="97%" style="stroke:rgb(0,0,0);stroke-width:1" />
<text x="{{ $x }}%" y="99%" fill="black" style="font-size:10px;">{{ (($x-1) / 98)*24 }}</text>
@endfor
<text x="95%" y="90%" fill="red">Zeit (h): y</text>
<!-- Nun die Datenpunkte: -->
<?php
$count = 0;
foreach($dataPoints as $key => $value)
{
if($count > 0)
{
$x1 = ($oldKey / 86400) * 98;
$x2 = ($key / 86400) * 98;
$y1 = 95 - (($oldVal / 100) * 95);
$y2 = 95 - (($value / 100) * 95);
echo '<line x1="'.$x1.'%" y1="'.$y1.'%" x2="'.$x2.'%" y2="'.$y2.'%" style="stroke:rgb(0,0,0);stroke-width:1" />';
}
$oldKey = $key;
$oldVal = $value;
$count++;
}
?>
</svg>
</div>
@endforeach
@endsection
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment