public static function processQueue()
    {
        if (count(self::$request_queue) == 0) {
            return false;
        }

        do {
            $multi_handle = curl_multi_exec(self::$queue_handle, $active);
        } while ($multi_handle == CURLM_CALL_MULTI_PERFORM);

        while ($active && $multi_handle == CURLM_OK) {
            if (curl_multi_select(self::$queue_handle) != -1) {
                do {
                    $multi_handle = curl_multi_exec(self::$queue_handle, $active);
                } while ($multi_handle == CURLM_CALL_MULTI_PERFORM);
            }
        }

        foreach (self::$request_queue as $key => $value) {
            $error = curl_error($value['handle']);
            if (!empty($error)) {
                $info = array(
                    'is_success'  => false,
                    'url'         => $value['url'],
                    'errorno'     => curl_errno($value['handle']),
                    'error'       => $error,
                    'queue'       => 'ON'
                );

                $result = false;
                $header = '';
            } else {
                $info = curl_getinfo($value['handle']);
                $info['is_success'] = true;
                $info['queue'] = 'ON';

                $body = curl_multi_getcontent($value['handle']);
                list($header, $result) = explode("\r\n\r\n", $body, 2);
            }

            self::logProfiling($info);
            self::$request_queue[$key]['response'] = new Response($info, $result, $header);
            $callback = $value['callback'];
            $callback(self::$request_queue[$key]['response']);

            curl_multi_remove_handle(self::$queue_handle, self::$request_queue[$key]['handle']);
        }

        curl_multi_close(self::$queue_handle);
        self::$request_queue = array();
        return true;
    }