什么是CURLOPT_FORBID_REUSE?

13
在libcurl中,FORBID_REUSE是什么意思?尤其是在PHP实现的CURL中是否有区别。我在这里找到了相关文档,但并没有太大帮助。它只是说“如果你不知道你在做什么,就不要使用它”。
那么,我想知道我在做什么。
2个回答

7

官方文档中得知:

设置为TRUE时,CURL将强制关闭连接,并在处理完成后不再缓存以供重用。

通常情况下,对同一个Web服务器的多个HTTP请求是按顺序发送到同一TCP连接上的。该选项禁用此项功能,使CURL为每个HTTP请求打开新的TCP连接,以应对损坏的HTTP服务器。


1
你为什么想要通过HTTP请求强制打开一个新的连接呢? - Explosion Pills
1
@tandu 如果你怀疑远程服务器存在破损的HTTP续传实现并且无法回答(或在TCP连接的第二个请求中遇到错误),那么你可以使用FORBID_REUSE。也可能存在一个非常古老的代理程序,会对多个请求进行批量处理。或者你想对curl的连接设置进行性能测试。所有这些情况都是比较特殊的,但这就是为什么它是一个选项而不是标准。 - phihag
我认为它会影响性能并取决于您的需求。如果您使用CURL连接许多不同的服务器,则应将其设置为false(因此不使用缓存)。问题是:“它会在进程退出时保留吗?” - Thomas Decaux
@ThomasDecaux 不,它不会影响下一次启动curl。如果您想再次使用该选项,只需重新设置即可。 - phihag
@phihag 谢谢,所以“缓存”仅适用于使用curl的当前进程。 - Thomas Decaux

1
TRUE表示在处理完成后强制关闭连接,不会被池化以供重用。
根据我的经验,我从未使用过它。这是防止缓存的一步。

2
那个引用的来源是什么?;P - Sainan
我不明白这与缓存有什么关系... 这与TCP连接有关,以及是否可以重复使用现有连接,或者每次都应该创建一个新的连接。它似乎与内容缓存无关。 - Arnaud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接