Executor::isRunning()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 5
nc 3
nop 0
1
<?php
2
3
namespace Loevgaard\CronBundle\Executor;
4
5
use Loevgaard\CronBundle\Entity\JobInterface;
6
use Symfony\Component\Process\Process;
7
8
class Executor
9
{
10
    /**
11
     * @var Process[]
12
     */
13
    protected $processes;
14
15
    public function __construct()
16
    {
17
        $this->processes = [];
18
    }
19
20
    /**
21
     * @param JobInterface[] $jobs
22
     */
23
    public function run(array $jobs)
24
    {
25
        foreach ($jobs as $job) {
26
            $p = new Process($job->getCommand().($job->getArguments() ? ' '.$job->getArguments() : ''));
27
28
            if ($job->getIdleTimeout()) {
29
                $p->setIdleTimeout($job->getIdleTimeout());
30
            }
31
32
            if ($job->getTimeout()) {
33
                $p->setIdleTimeout($job->getTimeout());
34
            }
35
36
            $p->start();
37
38
            $job->setPid($p->getPid());
39
40
            $this->processes[] = $p;
41
        }
42
    }
43
44
    /**
45
     * Returns true if any of the processes are still running.
46
     *
47
     * @return bool
48
     */
49
    public function isRunning(): bool
50
    {
51
        foreach ($this->processes as $process) {
52
            if ($process->isRunning()) {
53
                return true;
54
            }
55
        }
56
57
        return false;
58
    }
59
}
60