Monitor::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 10
rs 9.4285
cc 2
eloc 7
nc 2
nop 1
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
}