curl_multi_add_handle

(PHP 5, PHP 7)

curl_multi_add_handleДобавляет обычный cURL дескриптор к набору cURL дескрипторов

Описание

int curl_multi_add_handle ( resource $mh , resource $ch )

Добавляет дескриптор ch к набору дескрипторов mh

Список параметров

mh

Мульти-дескриптор cURL, полученный из curl_multi_init().

ch

Дескриптор cURL, полученный из curl_init().

Возвращаемые значения

Возвращает 0 при успехе, или один из кодов ошибок CURLM_XXX.

Примеры

Пример #1 Пример использования curl_multi_add_handle()

This example will create two cURL handles, add them to a multi handle, and process them asynchronously.

<?php
// создаем оба ресурса cURL
$ch1 curl_init();
$ch2 curl_init();

// устанавливаем URL и другие соответствующие опции
curl_setopt($ch1CURLOPT_URL"http://www.example.com/");
curl_setopt($ch1CURLOPT_HEADER0);
curl_setopt($ch2CURLOPT_URL"http://www.php.net/");
curl_setopt($ch2CURLOPT_HEADER0);

//создаем набор дескрипторов cURL
$mh curl_multi_init();

//добавляем два дескриптора
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
//запускаем дескрипторы
do {
    
curl_multi_exec($mh,$running);
} while(
$running 0);

//закрываем все дескрипторы
curl_multi_remove_handle($mh$ch1);
curl_multi_remove_handle($mh$ch2);
curl_multi_close($mh);
?>

Смотрите также

Коментарии

Автор:
The 'do' loop in this example will cycle indefinitely until all curl downloads complete, needlessly using CPU cycles.  A much better way is to block while dowloads are in progress.  Refer to the example code on the curl_multi_exec() page instead, which does this!
2012-12-24 08:29:32
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html
$nodes = array('http://www.google.com', 'http://www.microsoft.com', 'http://yahoo.com');
$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < $node_count; $i++)
{
    $url =$nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do {
    curl_multi_exec($master,$running);
} while($running > 0);

echo "results: ";
for($i = 0; $i < $node_count; $i++)
{
    $results = curl_multi_getcontent  ( $curl_arr[$i]  );
    echo( $i . "\n" . $results . "\n");
}
echo 'done';
2018-04-07 00:47:52
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html
Sometime with arrays and loops (i.e. for or do while or foreach) curl_multi_init  loses some hits, to work around this problem  it is necessary to divide the loop into two parts: the start with key number zero and than, all the rest. In this way the curl_multi_init doesn't lose any hits. I did a lot of test and it seems to work well enough. 
<?php

function set_option($x$y){
curl_setopt($xCURLOPT_URL$y);
curl_setopt($xCURLOPT_HEADER0);
curl_setopt($xCURLOPT_FOLLOWLOCATIONTRUE);
curl_setopt($xCURLOPT_RETURNTRANSFERTRUE);
curl_setopt($xCURLOPT_ENCODING"gzip,deflate");
}

$nodes = array('http://php.net/manual/it/function.curl-multi-add-handle.php'
'function.curl-multi-init'
'function.curl-multi-setopt'
);

$node_count count($nodes);

$curl_arr = array();
$master curl_multi_init();
/*
now I put the first part of the array with the start key number zero, add all     
options and add the curl_multi_add_handle;                                               
it is necessary to detach this first part to avoid to lose some handles and than running 
 the loop with the start key number one.                                                 
In this way the curl_multi_init doesn't lose anything and seems to be very stable.       
*/   
   
$curl_arr[0] = curl_init($nodes[0]);
   
set_option($curl_arr[0], $nodes[0]);
   
curl_multi_add_handle($master$curl_arr[0]);
   

/* 
now the loop can start with key number one                             
*/
$i 1;
do {
    if (
$i!==0){
 
   
$curl_arr[$i] = curl_init($nodes[$i]);
   
set_option($curl_arr[$i], $nodes[$i]);
   
curl_multi_add_handle($master$curl_arr[$i]);
    }
$i++;   
}while(
$i $node_count);

$running NULL;
do {
   
curl_multi_exec($master,$running);
} while(
$running);

$results = array();
$q 0;
do{
 
$results[$q] = curl_multi_getcontent($curl_arr[$q]);
 
curl_multi_remove_handle($master$curl_arr[$q]);
$q++;   
}while(
$q $node_count);

foreach(
$results as $value){
 echo 
$value;
}

?>
2018-07-20 19:18:45
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html
Автор:
Разрешение на строительство — это официальный документ, выписываемый полномочными органами государственного аппарата или местного управления, который позволяет начать строительную деятельность или осуществление строительных операций. 
<a href=https://rns-50.ru/>Разрешение на строительство</a> формулирует юридические основы и стандарты к строительным операциям, включая допустимые категории работ, разрешенные материалы и подходы, а также включает строительные инструкции и комплекты безопасности. Получение разрешения на возведение является необходимым документов для строительной сферы.
2023-09-01 15:15:40
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html
Автор:
Разрешение на строительство — это государственный удостоверение, предоставленный правомочными ведомствами государственного управления или территориального самоуправления, который дает возможность начать стройку или исполнение строительного процесса. 
<a href=https://rns-50.ru/>Получение разрешения на строительство</a> предписывает законодательные основания и стандарты к строительству, включая разрешенные категории работ, предусмотренные материалы и методы, а также включает строительные нормативные акты и комплексы охраны. Получение разрешения на строительную деятельность является обязательным документов для строительной сферы.
2023-09-02 17:57:13
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html
Самый быстрый и безопасный сервис обмена электронных денег ждет вас на <a href=https://www.bestchange.ru/?p=1305667>BestChange.ru</a>. Если вы фрилансер, веб-мастер, получаете деньги за услуги и постоянно имеете дело с электронной валютой в сети, то пользоваться традиционными сервисами не всегда удобно. Гораздо приятнее иметь дело с обменными пунктами, где меньше ограничений, лучше курсовая разница, скидки на тарифы для постоянных клиентов. Согласны? На BestChange представлены именно такие обменные пункты, «заточенные» под завсегдатаев Интернета, обладающие безупречной репутацией, решающие любые вопросы на раз-два-три. 
Проходите по ссылке — более 500 проверенных обменных онлайн-сервисов в одном месте — <a href=https://www.bestchange.ru/?p=1305667>BestChange.ru</a>
2025-01-18 11:28:20
http://php5.kiev.ua/manual/ru/function.curl-multi-add-handle.html

    Поддержать сайт на родительском проекте КГБ