@flammerman
Web Developer / И фронт и сервер

Как можно задать конфигурацию каждому потоку в multicurl?

Вопрос для тех, кто работал с библиотекой https://github.com/php-curl-class/php-curl-class

Есть массив соединений, внутри каждого элемента массива есть опции "options":
$connections = array(
        array(
            'path' => 'https://httpbin.org/ip',
            'header' => array(
                'Host' => 'httpbin.org',
                'Referer' => 'https://httpbin.org/ip',
            ),
            'options'=>array(
                CURLOPT_FOLLOWLOCATION => 1,
                CURLOPT_SSL_VERIFYPEER => 0,
                CURLOPT_SSL_VERIFYHOST => 0,
                CURLOPT_DNS_CACHE_TIMEOUT => 600,
            ),
        ),
        array(
            'path' => 'https://httpbin.org/ip',
            'header' => array(
                'Host' => 'httpbin.org',
                'Referer' => 'https://httpbin.org/ip',
            ),
            'options'=>array(
                CURLOPT_FOLLOWLOCATION => 1,
                CURLOPT_DNS_CACHE_TIMEOUT => 600,
            ),
        )
    );
// Собственно вызов
$curl = new MultiCurl();
foreach ($connections as $connection) {
   $curl->addGet($connection['path'],$connection['query']);
}
$curl->success(function($instance) use($response) {
            echo 'call to "' . $instance->url . '" was successful.' . "\n";
            //echo 'response: ' . $instance->response . "\n";
        });
        $curl->error(function($instance) {
            echo 'call to "' . $instance->url . '" was unsuccessful.' . "\n";
            echo 'error code: ' . $instance->errorCode . "\n";
            echo 'error message: ' . $instance->errorMessage . "\n";
        });
        $curl->start(); // Все работает


Кто знает как можно передать в мультикурл еще и опции для каждого соединения отдельно. Они уже записаны в массиве.
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@flammerman Автор вопроса
Web Developer / И фронт и сервер
Кажется получилось
$multi = new MultiCurl();  
        foreach ($this->connections as $connection) {
            $curl = new Curl(); // Тут создаем экземпляр класса  
            $curl->setHeaders($connection['header']); // делаем что надо, как надо
            $curl->setOpts($connection['options']); // делаем что надо, как надо
            $curl->{$connection['method']}($connection['path'],$connection['query']); // делаем что надо, как надо
            $multi->addCurl($curl);  // А тут просто передаем экземпляр в мультикурл уже с нужными настройками
// Пока вроде работает                 
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы