Completed
Push — master ( 07eea9...33c5d8 )
by Jaisen
9s
created
src/MultiCurlSequence.php 1 patch
Indentation   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -6,60 +6,60 @@  discard block
 block discarded – undo
6 6
  */
7 7
 class MultiCurlSequence
8 8
 {
9
-  private $width = 100;
10
-  private $timers;
11
-  private $min;
12
-  private $max;
13
-  private $range;
14
-  private $step;
9
+    private $width = 100;
10
+    private $timers;
11
+    private $min;
12
+    private $max;
13
+    private $range;
14
+    private $step;
15 15
 
16
-  public function __construct($timers) 
17
-  {
16
+    public function __construct($timers) 
17
+    {
18 18
     $this->timers = $timers;
19 19
     
20 20
     $min = PHP_INT_MAX;
21 21
     $max = 0;
22 22
     foreach($this->timers as $timer)
23 23
     {
24
-      if(!isset($timer['start']))
24
+        if(!isset($timer['start']))
25 25
         $timer['start'] = PHP_INT_MAX;
26 26
 
27
-      if(!isset($timer['end']))
27
+        if(!isset($timer['end']))
28 28
         $timer['end'] = 0;
29 29
 
30
-      $min = min($timer['start'], $min);
31
-      $max = max($timer['end'], $max);
30
+        $min = min($timer['start'], $min);
31
+        $max = max($timer['end'], $max);
32 32
     }
33 33
     $this->min = $min;
34 34
     $this->max = $max;
35 35
     $this->range = $max-$min;
36 36
     $this->step = floatval($this->range/$this->width);
37
-  }
37
+    }
38 38
 
39
-  public function renderAscii()
40
-  {
39
+    public function renderAscii()
40
+    {
41 41
     $tpl = '';
42 42
     foreach($this->timers as $timer)
43
-     $tpl .= $this->tplAscii($timer);
43
+        $tpl .= $this->tplAscii($timer);
44 44
     
45 45
     return $tpl;
46
-  }
46
+    }
47 47
 
48
-  private function tplAscii($timer)
49
-  {
48
+    private function tplAscii($timer)
49
+    {
50 50
     $lpad = $rpad = 0;
51 51
     $lspace = $chars = $rspace = '';
52 52
     if($timer['start'] > $this->min)
53
-      $lpad = intval(($timer['start'] - $this->min) / $this->step);
53
+        $lpad = intval(($timer['start'] - $this->min) / $this->step);
54 54
     if($timer['end'] < $this->max)
55
-      $rpad = intval(($this->max - $timer['end']) / $this->step);
55
+        $rpad = intval(($this->max - $timer['end']) / $this->step);
56 56
     $mpad = $this->width - $lpad - $rpad;
57 57
     if($lpad > 0)
58
-      $lspace = str_repeat(' ', $lpad);
58
+        $lspace = str_repeat(' ', $lpad);
59 59
     if($mpad > 0)
60
-      $chars = str_repeat('=', $mpad);
60
+        $chars = str_repeat('=', $mpad);
61 61
     if($rpad > 0)
62
-      $rspace = str_repeat(' ', $rpad);
62
+        $rspace = str_repeat(' ', $rpad);
63 63
     
64 64
     $tpl = <<<TPL
65 65
 ({$timer['api']} ::  code={$timer['code']}, start={$timer['start']}, end={$timer['end']}, total={$timer['time']})
@@ -67,5 +67,5 @@  discard block
 block discarded – undo
67 67
 
68 68
 TPL;
69 69
     return $tpl;
70
-  }
70
+    }
71 71
 }
Please login to merge, or discard this patch.
src/example.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@
 block discarded – undo
1 1
 #!/usr/bin/env php
2 2
 <?php
3 3
 if (php_sapi_name() !== 'cli')
4
-  die();
4
+    die();
5 5
 
6 6
 require '../vendor/autoload.php';
7 7
 $mc = JMathai\PhpMultiCurl\MultiCurl::getInstance();
Please login to merge, or discard this patch.
src/MultiCurlManager.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -6,24 +6,24 @@
 block discarded – undo
6 6
  */
7 7
 class MultiCurlManager
8 8
 {
9
-  private $key;
10
-  private $epiCurl;
9
+    private $key;
10
+    private $epiCurl;
11 11
 
12
-  public function __construct($key)
13
-  {
12
+    public function __construct($key)
13
+    {
14 14
     $this->key = $key;
15 15
     $this->epiCurl = MultiCurl::getInstance();
16
-  }
16
+    }
17 17
 
18
-  public function __get($name)
19
-  {
18
+    public function __get($name)
19
+    {
20 20
     $responses = $this->epiCurl->getResult($this->key);
21 21
     return isset($responses[$name]) ? $responses[$name] : null;
22
-  }
22
+    }
23 23
 
24
-  public function __isset($name)
25
-  {
24
+    public function __isset($name)
25
+    {
26 26
     $val = self::__get($name);
27 27
     return empty($val);
28
-  }
28
+    }
29 29
 }
Please login to merge, or discard this patch.
src/MultiCurl.php 1 patch
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -13,45 +13,45 @@  discard block
 block discarded – undo
13 13
  */
14 14
 class MultiCurl
15 15
 {
16
-  const timeout = 3;
17
-  private static $inst = null;
18
-  /* @TODO make this private and add a method to set it to 0 */
19
-  public static $singleton = 0;
20
-
21
-  private $mc;
22
-  private $running;
23
-  private $execStatus;
24
-  private $sleepIncrement = 1.1;
25
-  private $requests = array();
26
-  private $responses = array();
27
-  private $properties = array();
28
-  private static $timers = array();
29
-
30
-  public function __construct()
31
-  {
16
+    const timeout = 3;
17
+    private static $inst = null;
18
+    /* @TODO make this private and add a method to set it to 0 */
19
+    public static $singleton = 0;
20
+
21
+    private $mc;
22
+    private $running;
23
+    private $execStatus;
24
+    private $sleepIncrement = 1.1;
25
+    private $requests = array();
26
+    private $responses = array();
27
+    private $properties = array();
28
+    private static $timers = array();
29
+
30
+    public function __construct()
31
+    {
32 32
     if(self::$singleton === 0)
33 33
     {
34
-      throw new MultiCurlException('This class cannot be instantiated by the new keyword.  You must instantiate it using: $obj = MultiCurl::getInstance();');
34
+        throw new MultiCurlException('This class cannot be instantiated by the new keyword.  You must instantiate it using: $obj = MultiCurl::getInstance();');
35 35
     }
36 36
 
37 37
     $this->mc = curl_multi_init();
38 38
     $this->properties = array(
39
-      'code'  => CURLINFO_HTTP_CODE,
40
-      'time'  => CURLINFO_TOTAL_TIME,
41
-      'length'=> CURLINFO_CONTENT_LENGTH_DOWNLOAD,
42
-      'type'  => CURLINFO_CONTENT_TYPE,
43
-      'url'   => CURLINFO_EFFECTIVE_URL
44
-      );
45
-  }
39
+        'code'  => CURLINFO_HTTP_CODE,
40
+        'time'  => CURLINFO_TOTAL_TIME,
41
+        'length'=> CURLINFO_CONTENT_LENGTH_DOWNLOAD,
42
+        'type'  => CURLINFO_CONTENT_TYPE,
43
+        'url'   => CURLINFO_EFFECTIVE_URL
44
+        );
45
+    }
46 46
   
47
-  public function reset(){
48
-      $this->requests = array();
49
-      $this->responses = array();
50
-      self::$timers = array();
51
-  }
52
-
53
-  public function addUrl($url, $options = array())
54
-  {
47
+    public function reset(){
48
+        $this->requests = array();
49
+        $this->responses = array();
50
+        self::$timers = array();
51
+    }
52
+
53
+    public function addUrl($url, $options = array())
54
+    {
55 55
     $ch = curl_init($url);
56 56
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
57 57
     foreach($options as $option=>$value)
@@ -59,13 +59,13 @@  discard block
 block discarded – undo
59 59
         curl_setopt($ch, $option, $value);
60 60
     }
61 61
     return $this->addCurl($ch);
62
-  }
62
+    }
63 63
 
64
-  public function addCurl($ch)
65
-  {
64
+    public function addCurl($ch)
65
+    {
66 66
     if(gettype($ch) !== 'resource')
67 67
     {
68
-      throw new MultiCurlInvalidParameterException('Parameter must be a valid curl handle');
68
+        throw new MultiCurlInvalidParameterException('Parameter must be a valid curl handle');
69 69
     }
70 70
 
71 71
     $key = $this->getKey($ch);
@@ -78,31 +78,31 @@  discard block
 block discarded – undo
78 78
     // (1)
79 79
     if($code === CURLM_OK || $code === CURLM_CALL_MULTI_PERFORM)
80 80
     {
81
-      do
82
-      {
81
+        do
82
+        {
83 83
         $this->execStatus = curl_multi_exec($this->mc, $this->running);
84
-      } while ($this->execStatus === CURLM_CALL_MULTI_PERFORM);
84
+        } while ($this->execStatus === CURLM_CALL_MULTI_PERFORM);
85 85
 
86
-      return new MultiCurlManager($key);
86
+        return new MultiCurlManager($key);
87 87
     }
88 88
     else
89 89
     {
90
-      return $code;
90
+        return $code;
91
+    }
91 92
     }
92
-  }
93 93
 
94
-  public function getResult($key = null)
95
-  {
94
+    public function getResult($key = null)
95
+    {
96 96
     if($key != null)
97 97
     {
98
-      if(isset($this->responses[$key]['code']))
99
-      {
98
+        if(isset($this->responses[$key]['code']))
99
+        {
100 100
         return $this->responses[$key];
101
-      }
101
+        }
102 102
 
103
-      $innerSleepInt = $outerSleepInt = 1;
104
-      while($this->running && ($this->execStatus == CURLM_OK || $this->execStatus == CURLM_CALL_MULTI_PERFORM))
105
-      {
103
+        $innerSleepInt = $outerSleepInt = 1;
104
+        while($this->running && ($this->execStatus == CURLM_OK || $this->execStatus == CURLM_CALL_MULTI_PERFORM))
105
+        {
106 106
         usleep(intval($outerSleepInt));
107 107
         $outerSleepInt = intval(max(1, ($outerSleepInt*$this->sleepIncrement)));
108 108
         $ms=curl_multi_select($this->mc, 0);
@@ -110,114 +110,114 @@  discard block
 block discarded – undo
110 110
         // bug in PHP 5.3.18+ where curl_multi_select can return -1
111 111
         // https://bugs.php.net/bug.php?id=63411
112 112
         if($ms === -1)
113
-          usleep(100000);
113
+            usleep(100000);
114 114
 
115 115
         // see pull request https://github.com/jmathai/php-multi-curl/pull/17
116 116
         // details here http://curl.haxx.se/libcurl/c/libcurl-errors.html
117 117
         if($ms >= CURLM_CALL_MULTI_PERFORM)
118 118
         {
119
-          do{
119
+            do{
120 120
             $this->execStatus = curl_multi_exec($this->mc, $this->running);
121 121
             usleep(intval($innerSleepInt));
122 122
             $innerSleepInt = intval(max(1, ($innerSleepInt*$this->sleepIncrement)));
123
-          }while($this->execStatus==CURLM_CALL_MULTI_PERFORM);
124
-          $innerSleepInt = 1;
123
+            }while($this->execStatus==CURLM_CALL_MULTI_PERFORM);
124
+            $innerSleepInt = 1;
125 125
         }
126 126
         $this->storeResponses();
127 127
         if(isset($this->responses[$key]['data']))
128 128
         {
129
-          return $this->responses[$key];
129
+            return $this->responses[$key];
130 130
         }
131
-      }
132
-      return null;
131
+        }
132
+        return null;
133 133
     }
134 134
     return false;
135
-  }
135
+    }
136 136
 
137
-  public static function getSequence()
138
-  {
137
+    public static function getSequence()
138
+    {
139 139
     return new MultiCurlSequence(self::$timers);
140
-  }
140
+    }
141 141
 
142
-  public static function getTimers()
143
-  {
142
+    public static function getTimers()
143
+    {
144 144
     return self::$timers;
145
-  }
145
+    }
146 146
 
147
-  public function inject($key, $value)
148
-  {
147
+    public function inject($key, $value)
148
+    {
149 149
     $this->$key = $value;
150
-  }
150
+    }
151 151
 
152
-  private function getKey($ch)
153
-  {
152
+    private function getKey($ch)
153
+    {
154 154
     return (string)$ch;
155
-  }
155
+    }
156 156
 
157
-  private function headerCallback($ch, $header)
158
-  {
157
+    private function headerCallback($ch, $header)
158
+    {
159 159
     $_header = trim($header);
160 160
     $colonPos= strpos($_header, ':');
161 161
     if($colonPos > 0)
162 162
     {
163
-      $key = substr($_header, 0, $colonPos);
164
-      $val = preg_replace('/^\W+/','',substr($_header, $colonPos));
165
-      $this->responses[$this->getKey($ch)]['headers'][$key] = $val;
163
+        $key = substr($_header, 0, $colonPos);
164
+        $val = preg_replace('/^\W+/','',substr($_header, $colonPos));
165
+        $this->responses[$this->getKey($ch)]['headers'][$key] = $val;
166 166
     }
167 167
     return strlen($header);
168
-  }
168
+    }
169 169
 
170
-  private function storeResponses()
171
-  {
170
+    private function storeResponses()
171
+    {
172 172
     while($done = curl_multi_info_read($this->mc))
173 173
     {
174
-      $this->storeResponse($done);
174
+        $this->storeResponse($done);
175
+    }
175 176
     }
176
-  }
177 177
 
178
-  private function storeResponse($done, $isAsynchronous = true)
179
-  {
178
+    private function storeResponse($done, $isAsynchronous = true)
179
+    {
180 180
     $key = $this->getKey($done['handle']);
181 181
     $this->stopTimer($key, $done);
182 182
     if($isAsynchronous)
183
-      $this->responses[$key]['data'] = curl_multi_getcontent($done['handle']);
183
+        $this->responses[$key]['data'] = curl_multi_getcontent($done['handle']);
184 184
     else
185
-      $this->responses[$key]['data'] = curl_exec($done['handle']);
185
+        $this->responses[$key]['data'] = curl_exec($done['handle']);
186 186
 
187 187
     $this->responses[$key]['response'] = $this->responses[$key]['data'];
188 188
 
189 189
     foreach($this->properties as $name => $const)
190 190
     {
191
-      $this->responses[$key][$name] = curl_getinfo($done['handle'], $const);
191
+        $this->responses[$key][$name] = curl_getinfo($done['handle'], $const);
192 192
     }
193 193
     if($isAsynchronous)
194
-      curl_multi_remove_handle($this->mc, $done['handle']);
194
+        curl_multi_remove_handle($this->mc, $done['handle']);
195 195
     curl_close($done['handle']);
196
-  }
196
+    }
197 197
 
198
-  private function startTimer($key)
199
-  {
198
+    private function startTimer($key)
199
+    {
200 200
     self::$timers[$key]['start'] = microtime(true);
201
-  }
202
-
203
-  private function stopTimer($key, $done)
204
-  {
205
-      self::$timers[$key]['end'] = microtime(true);
206
-      self::$timers[$key]['api'] = curl_getinfo($done['handle'], CURLINFO_EFFECTIVE_URL);
207
-      self::$timers[$key]['time'] = curl_getinfo($done['handle'], CURLINFO_TOTAL_TIME);
208
-      self::$timers[$key]['code'] = curl_getinfo($done['handle'], CURLINFO_HTTP_CODE);
209
-  }
210
-
211
-  public static function getInstance()
212
-  {
201
+    }
202
+
203
+    private function stopTimer($key, $done)
204
+    {
205
+        self::$timers[$key]['end'] = microtime(true);
206
+        self::$timers[$key]['api'] = curl_getinfo($done['handle'], CURLINFO_EFFECTIVE_URL);
207
+        self::$timers[$key]['time'] = curl_getinfo($done['handle'], CURLINFO_TOTAL_TIME);
208
+        self::$timers[$key]['code'] = curl_getinfo($done['handle'], CURLINFO_HTTP_CODE);
209
+    }
210
+
211
+    public static function getInstance()
212
+    {
213 213
     if(self::$inst == null)
214 214
     {
215
-      self::$singleton = 1;
216
-      self::$inst = new MultiCurl();
215
+        self::$singleton = 1;
216
+        self::$inst = new MultiCurl();
217 217
     }
218 218
 
219 219
     return self::$inst;
220
-  }
220
+    }
221 221
 }
222 222
 
223 223
 /*
Please login to merge, or discard this patch.