Monitor   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 4
Bugs 0 Features 2
Metric Value
c 4
b 0
f 2
dl 0
loc 51
wmc 6
lcom 1
cbo 3
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 2
A addTask() 0 4 1
A start() 0 5 1
A signal() 0 8 2
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Jenner
5
 * Date: 2015/10/14
6
 * Time: 9:32
7
 */
8
9
namespace Jenner\LogMonitor;
10
11
12
use Jenner\SimpleFork\Pool;
13
use Monolog\Handler\NullHandler;
14
use Monolog\Logger;
15
use Psr\Log\LoggerInterface;
16
17
class Monitor
18
{
19
    /**
20
     * @var LoggerInterface
21
     */
22
    protected $logger;
23
24
25
    /**
26
     * @var Pool
27
     */
28
    protected $pool;
29
30
    /**
31
     * @param LoggerInterface $logger
32
     */
33
    public function __construct(LoggerInterface $logger = null)
34
    {
35
        if (is_null($logger)) {
36
            $this->logger = new Logger("monitor");
37
            $this->logger->pushHandler(new NullHandler());
38
        } else {
39
            $this->logger = $logger;
40
        }
41
        $this->pool = new Pool();
42
    }
43
44
    public function addTask(MonitorTask $task)
45
    {
46
        $this->pool->execute($task);
47
    }
48
49
    /**
50
     * start monitor
51
     * this method will block
52
     */
53
    public function start()
54
    {
55
        pcntl_signal(SIGTERM, array($this, 'signal'));
56
        $this->pool->wait();
57
    }
58
59
    public function signal($signal)
60
    {
61
        switch ($signal) {
62
            case SIGTERM:
63
                $this->pool->shutdown(SIGTERM);
64
                break;
65
        }
66
    }
67
}