Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

curl_multi_exec(3) [php man page]

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)

Check Out this Related Man Page

CURL_MULTI_INFO_READ(3) 						 1						   CURL_MULTI_INFO_READ(3)

curl_multi_info_read - Get information about the current transfers

SYNOPSIS
array curl_multi_info_read NULL (resource $mh, [int &$msgs_in_queue]) DESCRIPTION
Ask the multi handle if there are any messages or information from the individual transfers. Messages may include information such as an error code from the transfer or just the fact that a transfer is completed. Repeated calls to this function will return a new result each time, until a FALSE is returned as a signal that there is no more to get at this point. The integer pointed to with $msgs_in_queue will contain the number of remaining messages after this function was called. Warning The data the returned resource points to will not survive calling curl_multi_remove_handle(3). PARAMETERS
o $mh -A cURL multi handle returned by curl_multi_init(3). o $msgs_in_queue - Number of messages that are still in the queue RETURN VALUES
On success, returns an associative array for the message, FALSE on failure. Contents of the returned array +-------+---------------------------------------------------+ | Key: | | | | | | | Value: | | | | +-------+---------------------------------------------------+ | | | | msg | | | | | | | The CURLMSG_DONE constant. Other return values | | | are currently not available. | | | | | | | |result | | | | | | | One of the CURLE_* constants. If everything is | | | OK, the CURLE_OK will be the result. | | | | | | | |handle | | | | | | | Resource of type curl indicates the handle which | | | it concerns. | | | | +-------+---------------------------------------------------+ EXAMPLES
Example #1 A curl_multi_info_read(3) example <?php $urls = array( "http://www.cnn.com/", "http://www.bbc.co.uk/", "http://www.yahoo.com/" ); $mh = curl_multi_init(); foreach ($urls as $i => $url) { $conn[$i] = curl_init($url); curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1); curl_multi_add_handle($mh, $conn[$i]); } do { $status = curl_multi_exec($mh, $active); $info = curl_multi_info_read($mh); if (false !== $info) { var_dump($info); } } while ($status === CURLM_CALL_MULTI_PERFORM || $active); foreach ($urls as $i => $url) { $res[$i] = curl_multi_getcontent($conn[$i]); curl_close($conn[$i]); } var_dump(curl_multi_info_read($mh)); ?> The above example will output something similar to: array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(5) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(7) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(6) of type (curl) } bool(false) CHANGELOG
+--------+---------------------------+ |Version | | | | | | | Description | | | | +--------+---------------------------+ | 5.2.0 | | | | | | | $msgs_in_queue was added. | | | | +--------+---------------------------+ SEE ALSO
curl_multi_init(3). PHP Documentation Group CURL_MULTI_INFO_READ(3)
Man Page