CURL_MULTI_EXEC(3) 1 CURL_MULTI_EXEC(3)
curl_multi_exec - Run the sub-connections of the current cURL handle
SYNOPSIS
int curl_multi_exec (resource $mh, int &$still_running)
DESCRIPTION
Processes each of the handles in the stack. This method can be called whether or not a handle needs to read or write data.
PARAMETERS
o $mh
-A cURL multi handle returned by curl_multi_init(3).
o $still_running
- A reference to a flag to tell whether the operations are still running.
RETURN VALUES
A cURL code defined in the cURL Predefined Constants.
Note
This only returns errors regarding the whole multi stack. There might still have occurred problems on individual transfers even
when this function returns CURLM_OK.
EXAMPLES
Example #1
curl_multi_exec(3) example
This example will create two cURL handles, add them to a multi handle, and then run them in parallel.
<?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();
// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
//create the multiple cURL handle
$mh = curl_multi_init();
//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$active = null;
//execute the handles
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>
SEE ALSO
curl_multi_init(3), curl_multi_select(3), curl_exec(3).
PHP Documentation Group CURL_MULTI_EXEC(3)