CURLBulk::getHandle()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace ocpu\Request\Broker;
4
5
use ocpu\Request\IRequestBroker;
6
use ocpu\Request\IRequestBrokerMulti;
7
8
class CURLBulk implements IRequestBrokerMulti
9
{
10
    private $request;
11
    private $requests;
12
13
    public function init()
14
    {
15
        $this->request = \curl_multi_init();
16
        $this->requests = [];
17
    }
18
19
    public function exec()
20
    {
21
        $index = null;
22
        do {
23
            curl_multi_exec($this->request, $index);
24
        } while ($index > 0);
25
        $responses = [];
26
        foreach ($this->requests as $i => $request) {
27
            $responses[$i] = \curl_multi_getcontent($request);
28
        }
29
        return $responses;
30
    }
31
32
    public function close(): void
33
    {
34
        foreach ($this->requests as $request) {
35
            \curl_multi_remove_handle($this->request, $request);
36
        }
37
        curl_multi_close($this->request);
38
    }
39
40
    public function addRequest(IRequestBroker $request)
41
    {
42
        $req = $request->getHandle();
43
        $this->requests[] = $req;
44
        \curl_multi_add_handle($this->request, $req);
45
    }
46
47
    public function getHandle()
48
    {
49
        return $this->request;
50
    }
51
}
52