Using curl_multi_add_handle() in PHP to Manage Multiple cURL Requests

This article explains how the PHP curl_multi_add_handle() function can be used to add multiple cURL handles to a single session, provides its syntax and parameters, and includes a complete example demonstrating initialization, adding handles, executing requests, retrieving responses, and cleaning up.

php Courses
php Courses
php Courses
Using curl_multi_add_handle() in PHP to Manage Multiple cURL Requests

In PHP network request development, the curl library is a commonly used tool that offers many functions for performing various HTTP requests such as GET and POST, setting request headers, and handling cookies.

When sending multiple requests simultaneously, creating a separate cURL handle for each request can waste resources. PHP provides the curl_multi_add_handle() function to add multiple cURL handles to a single session for efficient management.

The syntax of curl_multi_add_handle() is:

resource curl_multi_add_handle ( resource $mh , resource $ch )

Parameters: $mh: an initialized cURL multi session handle. $ch: the new cURL handle to be added to the multi session.

The function adds the $ch handle to the $mh multi handle and returns a cURL multi handle.

Below is a sample code using curl_multi_add_handle():

<?php
$mh = curl_multi_init();  // Initialize a cURL multi session

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://www.example.com/api1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);  // Add first handle

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://www.example.com/api2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);  // Add second handle

// Execute until all requests are complete
do {
    $status = curl_multi_exec($mh, $running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $running);

// Retrieve results
$response1 = curl_multi_getcontent($ch1);
echo "Response 1: " . $response1 . "
";
$response2 = curl_multi_getcontent($ch2);
echo "Response 2: " . $response2 . "
";

// Clean up
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

The example first initializes a multi handle with curl_multi_init(), creates two independent cURL handles ( $ch1 and $ch2), sets their URLs and options, and adds them to the multi session using curl_multi_add_handle(). It then loops with curl_multi_exec() until all requests finish, retrieves each response with curl_multi_getcontent(), and finally removes the handles and closes the session.

Using curl_multi_add_handle() efficiently manages multiple cURL handles, improving network request performance and code maintainability. In practice, it can be combined with other functions such as curl_multi_remove_handle() and curl_multi_close() for more complex request workflows.

In summary, the curl_multi_add_handle() function is a valuable tool for adding multiple cURL handles to a single session, thereby enhancing request efficiency and code maintainability in real‑world development.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

cURLHTTP requestsmulti-handle
php Courses
Written by

php Courses

php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.