Я делаю multi curl в PHP, используя этот код:

$ch1 = curl_init();
$ch2 = curl_init();


// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, 'http://www.example.com/');
curl_setopt($ch1, CURLOPT_HEADER, 0);

curl_setopt($ch2, CURLOPT_URL, 'http://www.example.com/');
curl_setopt($ch2, CURLOPT_HEADER, 0);


//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {

Теперь, если вы настаиваете на самом деле на том, чтобы {{{x0}} метод, вы можете написать расширение самостоятельно:

curl_multi_add_handle($mh,[$ch1,$ch2]); ??
0
Youss 2 Янв 2016 в 13:36

2 ответа

Лучший ответ

Используйте A для цикла, но используйте массив вместо набора переменных, которые имеют то же имя, за исключением номера в конце.

1
Quentin 2 Янв 2016 в 10:39

Согласно ответу @Quentin, вы можете сделать это, как показано ниже:

$urls = array('http://www.example.com/', 'http://www.example1.com/', 'http://www.example2.com/');
$url_count = count($urls);

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

for($i = 0; $i < $url_count; $i++)
{
    $url = $urls[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_HEADER, 0);
    curl_multi_add_handle($mh, $curl_arr[$i]);
}
$active = null;
do {
    $mrc = curl_multi_exec($mh, $active);
} while($mrc == CURLM_CALL_MULTI_PERFORM);
1
hardik solanki 2 Янв 2016 в 10:50