Прежде всего нужно упомянуть про простейшую деталь: мультиCURL — это набор простых CURL-дескрипторов.
Это значит, что перед отправкой мультизапроса нужно создать и настроить каждый CURL-запрос по отдельности.
$arrayCurlHandlers[0] = curl_init();
curl_setopt_array($arrayCurlHandlers[0], array(
CURLOPT_URL => 'http://...',
CURLOPT_POSTFIELDS => '...',
CURLOPT_HTTPHEADER => '...',
[ПРОЧИЕ CURL-ПАРАМЕТРЫ],
)curl_setopt_array($arrayCurlHandlers[1], array(
CURLOPT_URL => 'http://...',
CURLOPT_POSTFIELDS => '...',
CURLOPT_HTTPHEADER => '...',
[ПРОЧИЕ CURL-ПАРАМЕТРЫ],
)curl_setopt_array($arrayCurlHandlers[2], array(
CURLOPT_URL => 'http://...',
CURLOPT_POSTFIELDS => '...',
CURLOPT_HTTPHEADER => '...',
[ПРОЧИЕ CURL-ПАРАМЕТРЫ],
)
Сейчас у нас есть 3 CURL-дескриптора, находящихся в массиве $arrayCurlHandlers[].
Далее создаем мультидескриптор:
$multiHandler = curl_multi_init();
Теперь добавляем в только что созданный мультидескриптор созданные ранее три CURL-дескриптора:
curl_multi_add_handle($multiHandler,$arrayCurlHandlers[0]);
curl_multi_add_handle($multiHandler,$arrayCurlHandlers[1]);
curl_multi_add_handle($multiHandler,$arrayCurlHandlers[2]);
Теперь отправляем мультизапрос, используя такую вот конструкцию:
do {
curl_multi_exec($multiHandler, $running);
curl_multi_select($multiHandler);
} while ($running > 0);
Функция curl_multi_select() блокирует дальнейшее выполнение скрипта и ждет активности на любом CURL-соединении.
Теперь остается только прочитать полученный ответ по всем запросам:
$arrayContent[0] = curl_multi_getcontent($arrayCurlHandlers[0]);
$arrayContent[1] = curl_multi_getcontent($arrayCurlHandlers[1]);
$arrayContent[2] = curl_multi_getcontent($arrayCurlHandlers[2]);
Собственно все.