function exec() { # http://www.php.net/manual/en/function.curl-multi-exec.php $active = null; do { $mrc = curl_multi_exec($this->handle, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($this->handle, xhttp_multi::curl_multi_select_timeout) != -1) { do { $mrc = curl_multi_exec($this->handle, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } $responses = array(); foreach ($this->requests as $request) { $response = curl_multi_getcontent($request['handle']); $responses[] = xhttp::after_curl_execution($request['handle'], $response, $request['data']); } xhttp_multi::stop(); return $responses; }