Ошибка #77 curl после 300 запроса
nikolablin opened this issue · comments
Добрый день.
Для обновления контактов использую метод getContactsByPhone.
Контактов много и запросов приходится делать много. Но после 300 запроса вылетаю в ошибку
HTTP: Ошибка cURL #77 (https://bitrix.autocity-finance.ru/rest/20/**/crm.contact.list.json):
Добрый день!
-
Ошибка cURL #77 связана с файлом корневых сертификатов
cacert.pem
: "CURLE_SSL_CACERT_BADFILE (77) Problem with reading the SSL CA cert (path? access rights?)". -
Попробуйте обновить библиотеку andrey-tech/http-client-php до версии v3.0.7. Она содержит актуальную на сегодня версию файла корневых серификатов
cacert.pem
.
Из вашего скриншота непонятно какая версия библиотеки andrey-tech/http-client-php
реально установлена. Проверьте версию библиотеки в composer.lock
или убедитесь, что сертификаты в файле cacert.pem
этой библиотеки датированы декабрём 2023 года.
Аналогичная проблема, версия библиотеки andrey-tech/http-client-php 3.0.7
@nikolablin
Давайте попробуем разобраться что происходит.
- Ошибка cURL #77 происходит всегда после 300 запроса?
- Ошибка cURL #77 происходит только при вызове метода
getContactsByPhone
? - Имеется ли какой-то дополнительный текст после двоеточия в сообщении об ошибке?
HTTP: Ошибка cURL #77 (https://bitrix.autocity-finance.ru/rest/20/**/crm.contact.list.json):
. - Попробуте добавить задержку между запросами, скажем, в 1 секунду и посмотрите возникнет ли ошибка после 300 запроса.
- Да, всегда после 300
- Да, другие методы отрабатывают. Только с этим проблема
- Нет, текста другого нет. Печатал развернуто ошибку, получил путь к выполнению метода в классе.
- Задержку в первую очередь пробовал добавить, секунд 20. Но ошибка все равно начиналась там же, на 300 запросе.
Попробуйте временно отключить проверку SSL/TLS-сертификата сервера и посмотреть будет ли возникать ошибка:
$bx24->http->verifySSLCertificate = false;
Отключил. На 300 запросе теперь летит ошибка Ошибка cURL #35 (https://bitrix.autocity-finance.ru/rest/*/***/crm.contact.list.json): Process open FD table is full
Видимо столкнулись с проблемой с cURL, описанной тут: php-http/curl-client#38
Предлагается, в частности, попробовать увеличить величину ulimit
. Надеюсь у вас GNU/Linux ;)
Попробую передать в Хэдер connection:close на 300 запросе и увеличить ulimit. Отпишусь.
У меня cURL #77 возникала в методе featchDealList
. Увеличение ulimit решило проблему. Спасибо
Увеличил ulimit, не помогло.
Connection close не могу интегрировать без вмешательства в библиотеку.
У меня cURL #77 возникала в методе featchDealList. Увеличение ulimit решило проблему. Спасибо
Расскажите как, где и насколько вы увеличили ulimit
. Может быть это кому-то поможет.
Увеличил ulimit, не помогло.
Connection close не могу интегрировать без вмешательства в библиотеку.
Попробуйте сделать временные изменения в vendor
, чтобы проверить результат.
Добавил в $requestHeaders Connection: close на каждый запрос и все отлично прошло сразу.
Быть может можно передавать этот хэдер сразу из $bx24? Чтоб не закрывать каждый раз, а по счетчику?
Поскольку для каждого запроса вызывается curl_init()
, а после обработки ответа - curl_close()
, то есть соединение не персистентное, то разумно с каждым запросом передавать HTTP-заголовок Connection: close
.
Окей, тогда оставлю его там на постоянку. Спасибо за помощь)