MyCurl   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 58
c 0
b 0
f 0
ccs 25
cts 25
cp 1
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A request() 0 14 1
A multi() 0 27 4
1
<?php
2
3
namespace daib17\Model;
4
5
use Anax\Commons\ContainerInjectableInterface;
6
use Anax\Commons\ContainerInjectableTrait;
7
8
/**
9
* cURL class wrapper
10
*/
11
class MyCurl implements ContainerInjectableInterface
12
{
13
    use ContainerInjectableTrait;
14
15
    /**
16
    * Make API request
17
    */
18 4
    public function request($url)
19
    {
20
        // Initialize curl
21 4
        $curl = curl_init($url);
22 4
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
23
24
        // Store the data
25 4
        $json = curl_exec($curl);
26 4
        curl_close($curl);
27
28
        // Decode JSON response
29 4
        $res = json_decode($json, true);
30
31 4
        return $res;
32
    }
33
34
35
    /**
36
    * Multiple concurrent requests using curl_multi* functions.
37
    *
38
    * @param array $multiCurl array of requests
39
    *
40
    * @return array Array containing results from multiple requests
41
    */
42 1
    public function multi($urlArr)
43
    {
44 1
        $multiCurl = [];
45 1
        $result = [];
46 1
        $mhandle = curl_multi_init();    // multiple handle
47 1
        foreach ($urlArr as $i => $url) {
48 1
            $multiCurl[$i] = curl_init();
49 1
            curl_setopt($multiCurl[$i], CURLOPT_URL, $url);
50 1
            curl_setopt($multiCurl[$i], CURLOPT_HEADER, 0);
51 1
            curl_setopt($multiCurl[$i], CURLOPT_RETURNTRANSFER, 1);
52 1
            curl_multi_add_handle($mhandle, $multiCurl[$i]);
53
        }
54
55 1
        $index = null;
56
        do {
57 1
            curl_multi_exec($mhandle, $index);
58 1
        } while ($index > 0);
59
60
        // Get content and remove handles
61 1
        foreach ($multiCurl as $k => $ch) {
62 1
            $result[$k] = json_decode(curl_multi_getcontent($ch), true);
63 1
            curl_multi_remove_handle($mhandle, $ch);
64
        }
65
        // close
66 1
        curl_multi_close($mhandle);
67
68 1
        return $result;
69
    }
70
}
71