为什么libcurl计算“4 TIMES”添加简易句柄的数量?

时间:2016-08-19 06:57:59

标签: php c http curl libcurl

我有两个问题。

(对于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如何运作?

首先,我认为当前PHP手册中对CURLMPOT_MAXCONNECTS的描述是错误的。我在这里报告了这个问题:
PHP :: Doc Bug #72890 :: The description of CURLOPT_MAXCONNECTS is wrong

  

说明

     

CURLOPT_MAXCONNECTS的描述错误。

     

PHP手册说:“默认为10.”
  libcurl手册说:“默认情况下,libcurl将扩大每个添加的简易手柄的大小,使其适合添加的简易手柄数量的4倍。”

<<主要问题>>

假设我的观点是正确的,为什么libcurl计算 4次添加的简易句柄的数量?我不知道这个操作没有意义......

1 个答案:

答案 0 :(得分:3)

最大连接选项

如果您需要最准确和详细的文档,您应该阅读curl提供的文档,因为这些选项只是从PHP传递到libcurl。这三个选项已经非常清楚地记录在案。如果您在阅读完curl文档后有疑问,那么我很乐意调整它们以删除剩下的问题:

CURLOPT_MAXCONNECTS - 这在使用简易界面时设置了限制

CURLMOPT_MAXCONNECTS - 这是在使用多界面时

CURLMOPT_MAX_TOTAL_CONNECTIONS - 这是直播连接

的最大值

为什么手柄数量是4倍?

这只是一个判断调用,当我不得不想出一个默认值时,开发人员(我!)选择的任意数字。我们希望允许一个公平规模的连接池来鼓励和实现良好的连接重用,但我们不希望它太大,因为它只会浪费资源而且池越大,从不 - 那里将再次使用连接。

这个想法也是因为多接口通常与许多并行句柄一起使用,因此将使用比常规简易句柄更大的池/缓存,并且只能进行串行传输。