I'm having trouble creating multiple xml requests using php's curl_multi_exec.
The problem is that the do...while loop containing the curl_multi_exec command runs only once and then quits.
Resources Used:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/ http://php.net/manual/en/function.curl-multi-exec.php/ http://www.rustyrazorblade.com/2008/02/curl_multi_exec/
Take a look at my code:
    //Multi handle curl initialization
    $mh = curl_multi_init();
    //set url
    $url = 'my_url';
    foreach($latLng as $id => $l) {
        $ch[$id] = curl_init();
        //$request previously set                
        //Initialize and set options 
        curl_setopt($ch, CURLOPT_URL,                $url);
        curl_setopt($ch, CURLOPT_HEADER,             0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,     1);
        curl_setopt($ch, CURLOPT_POST,               1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,        $request); 
        //add to multi_handle
        curl_multi_add_handle($mh, $ch[$id]);
    }
    //Execute the handles
    $running = null;
    do {
        $mrc = curl_multi_exec($mh, $running);   
        $ready=curl_multi_select($mh);
        echo "Ran once\n";
    } while ($mrc == CURLM_CALL_MULTI_PERFORM && $ready > 0);
    while ($active && $mrc == CURLM_OK) {
        if ($curl_multi_select($mh) != -1) {
            do {
                $mrc = curl_multi_exec($mh, $running);
                echo "Ran again\n";
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
        }
    }
    foreach ($mh as $c) {
        // HTTP response code
        $code = curl_getinfo($c,  CURLINFO_HTTP_CODE);
        // cURL error number
        $curl_errno = curl_errno($c);
        // cURL error message   
        $curl_error = curl_error($c);
        // output if there was an error                                                            
        if ($curl_error) {
            echo("*** cURL error: ($curl_errno) $curl_error\n");
        }
    }
    //get content and remove handles
    foreach ($ch as $c) {
        $result[] = curl_multi_getcontent($c);  
        curl_multi_remove_handle($mh, $c);  
    }   
    print_r($result);
    //Close curl
    curl_multi_close($mh);
}
I know the request is valid because I receive the correct return data when I perform a single curl execution. The problem lies with the curl_multi_exec().
The output I am receiving is "Ran once" followed by the empty arrays of the curl_multi_getcontent() calls. See below:
Ran once Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => )
Any help is greatly appreciated.
 
                        
You're not setting up the
curloptions correctly:Currently, you're setting options on
$chwhich is your array, you need to be setting the options specifically on the current curl handler, which in your loop is$ch[$id]: