How can PHP handle multiple API calls in a foreach loop without interference?

When making multiple API calls in a foreach loop in PHP, it's important to ensure that each call is independent and does not interfere with the others. To achieve this, you can use PHP's cURL library to handle each API call asynchronously, allowing them to run concurrently without blocking each other.

// Array of API endpoints
$apiEndpoints = [
    'https://api.example.com/endpoint1',
    'https://api.example.com/endpoint2',
    'https://api.example.com/endpoint3'
];

// Initialize multi cURL handler
$mh = curl_multi_init();

// Array to hold individual cURL handles
$handles = [];

// Loop through each API endpoint
foreach ($apiEndpoints as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// Execute all cURL handles concurrently
$active = null;
do {
    curl_multi_exec($mh, $active);
} while ($active);

// Retrieve and process responses
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // Process the API response here
    echo $response . PHP_EOL;
    curl_multi_remove_handle($mh, $handle);
    curl_close($handle);
}

// Close the multi cURL handler
curl_multi_close($mh);