Using curl_multi_select() in PHP to Wait for Active cURL Transfers
This article explains how to use PHP's curl_multi_select() function within the curl_multi library to wait for active cURL transfers, describes its parameters, demonstrates a complete example with multiple handles, and provides best‑practice tips for efficient multi‑request handling.
In PHP, using the cURL library for HTTP requests is common. When handling multiple requests simultaneously, the curl_multi library can be used. While using curl_multi, we often need to wait for the current active cURL transfers to finish, which can be done with the curl_multi_select() function.
Function Definition
curl_multi_select(resource $mh[, float $timeout])Parameters
$mh: The curl multi handle to wait on. $timeout: Optional timeout in seconds; if set to 0 the function returns immediately.
Function Purpose
The curl_multi_select() function waits for the currently active cURL transfers to complete and returns the number of handles ready for reading. Calling this function keeps the script active during the wait period.
Example
$mh = curl_multi_init();
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://example.com/api/request1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://example.com/api/request2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh); // wait for active transfers
}
} while ($active && $status == CURLM_OK);
// After processing all requests, close handles
foreach ([$ch1, $ch2] as $ch) {
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);In this example we create a curl_multi handle, add two individual curl handles, and use a loop that calls curl_multi_exec() to process transfers. If there are still active transfers, curl_multi_select() is called to wait while allowing other tasks to run. The loop continues until all transfers are finished.
Finally, after all requests are processed, we close all individual curl handles and the curl_multi handle.
Summary
Using curl_multi_select() helps wait for active cURL transfers, keeping the script responsive and improving the efficiency and performance of multiple HTTP requests.
Note: Ensure proper error and exception handling to avoid infinite waiting.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
php Courses
php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
