Почему я получаю ошибку cURL 77, выполняя несколько запросов с помощью Guzzle?

Я пытаюсь использовать Guzzle для отправки нескольких запросов, но когда я пытаюсь получить ответ, я продолжаю получать cURL 77 error. Я подключаюсь к Zoom API с помощью JWT. У меня есть массив из 700 элементов, поэтому для каждого элемента я пытаюсь создать запрос, используя getAsync, передавая токен jwt.

Мой код такой:

foreach ($agrupado as $registro) {
$requestArr[$registro['id']] = $cliente->getAsync('https://api.zoom.us/v2/webinars/'.$id.'/registrants/'.$registro['id'], [
                'headers' => [
                    'Authorization' => 'Bearer '.$jwt
                ]]);
}
$respostas = \GuzzleHttp\Promise\unwrap($requestArr);
var_dump($respostas);

Если я делаю тот же запрос, используя метод get и тот же токен, он работает. Я получаю ответ, без проблем. Это очень странно.


person churros    schedule 16.07.2020    source источник
comment
Пробовали отключить проверку сертификата? new Client(['verify' => false]);? Если это работает, возможно, ваш пакет CA устарел.   -  person ficuscr    schedule 16.07.2020
comment
comment
Это очень странно, эта штука с сертификатом. Я никогда не использовал сертификаты для использования Zoom API. Фактически, у меня есть тот же скрипт с той же логикой, работающий с использованием чистого PHP CURL. Моя идея сейчас, используя Guzzle, состоит в том, чтобы сделать скрипт более простым и быстрым. Итак, я не понимаю. Нужно ли использовать сертификат для этого метода getAsync?   -  person churros    schedule 17.07.2020
comment
Смотрите вопрос, который я связал. Если вы используете HTTPS, вы используете закрытые / открытые ключи, сертификаты, и если ваш пакет ЦС на сервере устарел, вы не можете установить безопасное соединение. Если пропустить проверку, все работает, тогда устраните основную проблему.   -  person ficuscr    schedule 17.07.2020
comment
Да, я видел это. Но я могу сделать запрос. Проблема в том, что я использую Guzzle и несколько запросов. Если я просто сделаю один единственный запрос к этой конечной точке, это сработает. Итак, это сообщение о сертификате, но проблема, похоже, в другом. Если бы была проблема с сертификатом, я бы не смог сделать ни одного запроса, верно?   -  person churros    schedule 19.07.2020
comment
Нужно увидеть полное сообщение об ошибке, и в идеале вы должны получить подробный вывод и увидеть как необработанный запрос, так и ответ с заголовками. Вы смотрели на ограничения скорости API?   -  person ficuscr    schedule 20.07.2020


Ответы (1)


Я нашел это, и теперь я могу делать несколько запросов, используя Guzzle to Zoom API.

Я думаю, что проблема была в том, что я делал много запросов, а API в какой-то момент отклонял вызовы. Я знаю это, потому что я протестировал его с несколькими запросами, например, 5 или 10. И все было в порядке. Когда я сделал 30 запросов, я получаю ошибку сертификата.

Итак, я реализовал пример на этот учебник (параллелизм в промисе) с использованием промисов Guzzle и класса EachPromise. Я поддерживаю низкое количество параллелизма и использую метод ожидания в конце скрипта. Теперь все работает.

person churros    schedule 20.07.2020