12、PHP 8.4 新特性 - cURL 扩展 setopt 新增 CURLOPT_TCP_KEEPCNT 选项

作者: 温新

图书: 【PHP 8.4 新特性】

阅读: 94

时间: 2025-01-17 10:09:59

注意:目前文档还没有更此说明,通过代码追踪可以看到这是 PHP 8.4 新增的。

PHP 8.4 的 cURL 扩展引入了一个新的 cURL 选项 CURLOPT_TCP_KEEPCNT,用于设置 TCP 保持活动探测的最大数量。

此选项的默认值设置为 9,但通过使用 CURLOPT_TCP_KEEPCNT 选项,可以增加或减少保持活动探测的最大数量。

该选项接受任何大于或等于 0 的整数值。尝试设置无效值会导致 curl_setopt 调用返回 false。

其他 cURL 选项如 CURLOPT_TCP_KEEPALIVECURLOPT_TCP_KEEPIDLECURLOPT_TCP_KEEPINTVL 也提供了对 TCP 保持活动功能的更多控制。

  • CURLOPT_TCP_KEEPALIVE:启用或禁用 TCP 保持活动。
  • CURLOPT_TCP_KEEPIDLE:设置在发送第一个保持活动探测之前等待的空闲时间(秒)。
  • CURLOPT_TCP_KEEPINTVL:设置连续的保持活动探测之间的间隔时间(秒)。

这些选项共同作用,可以帮助开发者更精细地管理长连接的存活状态,从而提高网络连接的稳定性和效率。例如,在长时间运行的应用程序中,合理配置这些参数可以确保连接不会因为长时间无数据传输而被中间设备(如路由器或防火墙)关闭。

使用案例

<?php

declare(strict_types=1);

$ch = curl_init('https://qq.com');

// 设置 CURLOPT_TCP_KEEPCNT 选项
curl_setopt($ch, CURLOPT_TCP_KEEPCNT, 5); // 设置保活包的最大发送次数为 5 次

// 执行请求
$response = curl_exec($ch);

// 检查请求是否成功
if ($response === false) {
    echo "cURL 错误: " . curl_error($ch);
} else {
    echo "响应内容: " . $response;
}

curl_close($ch);

向后兼容性影响

此选项在 PHP 8.4 上可用,如果扩展是用 libcurl 8.9.0 或更高版本构建的。无法将此功能反向移植到较旧的 PHP 版本。

请登录后再评论