gpt4 book ai didi

php - HTTP 请求的 keep_alive 和 persistent 选项有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 12:21:35 28 4
gpt4 key购买 nike

有人可以向我们解释以下参数之间的行为差​​异吗:

Zend_Http_Client 类中的

keep_alive 参数 ?

在 Zend_Http_Client_Adapter_Socket 类中持久 ?

我想了解我需要做什么来保持一堆 HTTPS 连接打开(以避免 SSL 协商)。

谢谢,加斯顿

最佳答案

如果您使用持久连接,您也应该使用保持事件状态,因为如果没有保持事件状态的 HTTP 1.1 连接,您的持久 将不得不做很多工作来模拟这项工作。

编辑:(该吃饭了)

Keepalive 设置讨论了由服务器设置的相当短时间 设置。 Apache 默认为 Keep-Alive 请求处理 15s,但当前优化设置为 5s。这主要是为了帮助 HTTP 客户端下载 js 和 css 附加到同一 HTTP 连接中的页面。如果您可以调整服务器设置,您可以尝试最长的 Keep-Alive 查询(但要小心,这将严重限制您的服务器接受的客户端数量)。

持久连接 模式是为了真正模拟一个长期持久连接,打开的套接字不会在脚本结束时关闭。你应该非常小心这样的设置。您是否处于 CLI 模式? FCGI?如果您在 apache 进程中运行,我真的不确定您是否会在此脚本的下一个请求中获得相同的连接(可能由另一个 apache 进程处理),如果您的代码运行在大型部署中的多个 apache 服务器。这是针对客户端 (PHP) 的,但对于目标服务器来说也是一个很大的痛苦。

重新编辑:(因为必须说一些关于SSL的事情)

您确定需要优化 SSL 协商时间吗? SSL 使用缓存,至少在服务器端,将协商限制为第一个请求。 SSL session 的客户端缓存可能由 PHP stream_socket_client 函数完成(由 Zend 类使用。如果没有,您可以从自己的类中测试一个新类(只需要实现接口(interface))和尝试使用 curl,因为 curl 默认使用 SSL session 缓存。

关于php - HTTP 请求的 keep_alive 和 persistent 选项有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671962/

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