Как через cURL отправить многопоточно данные?

Мне надо отправить одновременно более одного потока через cURL данные на сервер. Одним потоком я сделал и работает нормально а больше не могу понять как организовать.
Одним потоком сделал так и работает.
$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array(	
		'Content-Type: application/rss+xml',
		'Authorization: OAuth ' . TOKEN
   	));
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   	curl_setopt($ch, CURLOPT_POSTFIELDS, $putData); 
	curl_close($ch);


Многопоточно сделал так но мне кажется что не работает как надо
foreach ($files as $i => $data) {
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_HTTPHEADER, array(
            'Content-Type: application/rss+xml',
            'Authorization: OAuth ' . TOKEN
        ));
    curl_setopt($curl_arr[$i], CURLOPT_POST, 1);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_arr[$i], CURLOPT_POSTFIELDS, $putData);
    curl_multi_add_handle($multi, $curl_arr[$i]);
}


$running = NULL;
do {
    curl_multi_exec($multi, $running);
} while ($running > 0);

foreach ($files as $i => $data) {
    curl_multi_remove_handle($multi, $curl_arr[$i]);
}
curl_multi_close($multi);


Скажите пожалуйста что не так делаю.
Примеры нашел только для получение мнгопоточно а отправлять нет.
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
coderisimo
@coderisimo
Очень удобен guzzle - docs.guzzlephp.org/en/stable/quickstart.html Можно отправлять запросы асинхронно, можно дожидаться, когда весь пул запросов будет завершен и вызвать метод по их завершении, итд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы