gpt4 book ai didi

php - 使用 PHP Curl 库的持久/保持事件 HTTP?

转载 作者:IT老高 更新时间:2023-10-28 12:05:29 27 4
gpt4 key购买 nike

我正在使用一个简单的 PHP 库通过 HTTP 将文档添加到 SOLR 索引。

目前涉及3台服务器:

  1. 运行索引作业的 PHP 框
  2. 存放被索引数据的数据库框
  3. solr 盒子。

以 80 个文档/秒(在 100 万个文档中)的速度,我注意到 PHP 和 solr 盒上的网络接口(interface)的中断率异常高(2000/秒;此外,图表几乎相同——当 PHP 盒上的中断率达到峰值时,Solr 盒上的中断率也会达到峰值),但数据库盒上的中断率要低得多(300/秒)。我想这仅仅是因为我打开并重用了到数据库服务器的单个连接,但是由于 Solr 客户端库的编写方式,每个 Solr 请求当前都通过 cURL 打开一个新的 HTTP 连接。

所以,我的问题是:

  1. 可以使用 cURL 来打开 keepalive session 吗?
  2. 如何重用连接? -- 是否像重用 cURL 句柄资源一样简单?
  3. 我需要设置任何特殊的 cURL 选项吗? (例如强制 HTTP 1.1?)
  4. cURL keepalive 连接有什么陷阱吗?该脚本一次运行数小时;我可以使用单一连接,还是需要定期重新连接?

最佳答案

cURL PHP 文档 (curl_setopt) 说:

CURLOPT_FORBID_REUSE - TRUE to force the connection to explicitly close when it has finished processing, and not be pooled for reuse.

所以:

  1. 是的,实际上它应该默认重用连接,只要你重用 cURL 句柄。
  2. 默认情况下,cURL 自己处理持久连接;如果您需要一些特殊的 header ,请检查 CURLOPT_HTTPHEADER
  3. 服务器可能会发送一个保持事件超时(默认 Apache 安装,它是 15 秒或 100 个请求,以先到者为准) - 但当这种情况发生时,cURL 只会打开另一个连接。

关于php - 使用 PHP Curl 库的持久/保持事件 HTTP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972925/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com