Добавление значений в массив из нескольких запросов curl

Я сейчас пользуюсь PHP-завиток-класс и я пытаюсь создать массив URL-адресов из ответов JSON, которые соответствуют коду ошибки в моем коде ниже. Моей последней попыткой было использование array_push, в результате чего URL создали массив таких же URL, как этот.

Array
(
[0] => http://example.com
[1] => http://example.com
)

И то, что я пытаюсь достичь, это что-то вроде этого.

Array
(
[0] => http://example.com
[1] => http://example2.com
[2] => http://example3.com
[3] => http://example4.com

)

Мой код:

require __DIR__ . '/vendor/autoload.php';
use \Curl\MultiCurl;

$curl_opts = [
CURLOPT_VERBOSE=> true
];

$out = array();
$errors = array();
$multi_curl = new MultiCurl();

$multi_curl->success(function ($instance) use (&$con, $out, $errors) {
$out[$instance->out] = $instance->response;

foreach ($out as $output){
$error = $output->error;
$p_id = $output->p_id;

if (isset($error) && $error == '2'){
echo '2 error';
$errors[] = $instance->url;
array_push($errors, $instance->url);
}
}
print_r($errors);
});

foreach($curl_opts as $key=>$value)
$multi_curl->setOpt($key, $value);

$multi_curl->complete(function($instance){
echo 1;
});

$multi_curl->addGet('http://example.com');
$multi_curl->addGet('http://example2.com');
$multi_curl->addGet('http://example3.com');
$multi_curl->addGet('http://example4.com');

$multi_curl->setConcurrency(3);
$multi_curl->start();

var_dump($multi_curl);

У кого-нибудь есть предложения? Благодарю.

3

Решение

Я понял. У меня была такая же проблема в прошлом с использованием RollingCurl. Я забыл добавить & в начале массивов в функции успеха.
Вместо этого:

$multi_curl->success(function ($instance) use (&$con, $out, $errors)

Должно было быть так:

$multi_curl->success(function ($instance) use (&$con, &$out, &$errors)

Если вы хотите получить доступ к значениям вне цикла, вы должны определить & перед вашей переменной, как я только что показал. Я не знаю другого пути, если кто-то знает что-то лучше, я был бы рад услышать это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector