Почему libcurl вычисляет "4 РАЗА" количество добавленных простых дескрипторов?
У меня два вопроса.
(Для downvoter: Второй вопрос основан на признании, представленном в первом вопросе, поэтому они НЕ слишком широки)
Q1. Какая разница между CURLOPT_MAXCONNECTS
/ CURLMOPT_MAXCONNECTS
/ CURLMOPT_MAX_TOTAL_CONNECTIONS
?
Я написал статью:
CURLOPT_MAXCONNECTS / CURLMOPT_MAXCONNECTS / CURLMOPT_MAX_TOTAL_CONNECTIONS の 違 い - Qiita
Резюме на английском языке:
CURLOPT_MAXCONNECTS
(PHP 5.5 или более поздняя версия)- Предел незанятых соединений, кэшированных
curl_exec
- Предел незанятых соединений, кэшированных
CURLMOPT_MAXCONNECTS
(PHP 5.5 или более поздняя версия)- Предел незанятых соединений, кэшированных
curl_multi_exec
- Предел незанятых соединений, кэшированных
CURLMOPT_MAX_TOTAL_CONNECTIONS
(PHP 7.0.7 или более поздняя версия)- Предел активных соединений, запущенных
curl_multi_exec
- Предел активных соединений, запущенных
Они правы?
Q2. Как CURLMOPT_MAXCONNECTS
Работа?
Во-первых, я считаю, что описание CURLMPOT_MAXCONNECTS
в текущем руководстве PHP неправильно. Я сообщил о проблеме здесь:
PHP:: Doc Bug # 72890:: Описание CURLOPT_MAXCONNECTS неверно
Описание:
Описание CURLOPT_MAXCONNECTS неверно.
В руководстве по PHP написано: "По умолчанию 10".
В руководстве по libcurl сказано: "По умолчанию libcurl увеличивает размер каждой добавленной легкой ручки, чтобы она в 4 раза превышала количество добавленных простых ручек".
<< ОСНОВНОЙ ВОПРОС >>
Исходя из предположения, что мое мнение верно, почему libcurl вычисляет в 4 раза больше добавленных простых дескрипторов? Интересно, эта операция не имеет смысла...
1 ответ
Максимальное количество вариантов подключения
Вам, вероятно, следует прочитать документацию, которую предоставляет curl, если вы хотите наиболее точную и подробную документацию, поскольку эти опции просто передаются из PHP в libcurl. Эти три варианта уже задокументированы довольно четко. Если после прочтения документации по curl у вас возникнут вопросы, я буду рад поработать над их настройкой, чтобы удалить оставшиеся вопросы:
CURLOPT_MAXCONNECTS - это устанавливает предел при использовании простого интерфейса
CURLMOPT_MAXCONNECTS - это при использовании мультиинтерфейса
https://curl.haxx.se/libcurl/c/CURLMOPT_MAX_TOTAL_CONNECTIONS.html - это максимальное количество активных соединений
Почему в 4 раза больше количества ручек?
Это был просто оценочный вызов, произвольный номер, выбранный разработчиками (мной!), Когда мне пришлось придумать значение по умолчанию для использования. Мы хотим, чтобы пул соединений достаточного размера поощрял и позволял хорошее повторное использование соединений, но мы не хотим, чтобы он был слишком большим, поскольку он будет просто тратить ресурсы и чем больше пул, тем больше больше никогда не используемых соединений там будет там.
Идея также состоит в том, что мультиинтерфейс обычно используется со многими параллельными дескрипторами, и поэтому он будет использовать и извлекать выгоду из наличия большего пула / кэша, чем обычный простой дескриптор, который выполняет передачу только последовательно.