curl_reset

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

curl_reset重置 libcurl 会话句柄的所有选项

说明

curl_reset(CurlHandle $handle): void

此函数将给定 cURL 句柄上设置的所有选项重新初始化为默认值。

参数

handle

curl_init() 返回的 cURL 句柄。

返回值

不返回值。

变更日志

版本 说明
8.0.0 handle 现在需要一个 CurlHandle 实例;之前需要的是一个 资源

示例

示例 #1 curl_reset() 示例

<?php
// 创建一个 curl 句柄
$ch = curl_init();

// 设置 CURLOPT_USERAGENT 选项
curl_setopt($ch, CURLOPT_USERAGENT, "My test user-agent");

// 重置所有先前设置的选项
curl_reset($ch);

// 发送 HTTP 请求
curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
curl_exec($ch); // 之前设置的用户代理不会被发送,它已被 curl_reset 重置

// 关闭句柄
curl_close($ch);
?>

注释

注意:

curl_reset() 还会重置作为 curl_init() 参数给出的 URL。

参见

添加注释

用户贡献的注释 2 个注释

9
Waloon
8 年前
针对 php < 5.5 的技巧

function curl_reset(&$ch){
$ch = curl_init();
}
0
dev at codesatori dot com
7 年前
如果你正在重复使用一个 cUrl 句柄,并且想要确保没有来自先前选项的残留物,但是对重置每次 cURL 调用所需的每个基本选项(例如 FTP 详细信息)感到沮丧,那么这里有一个简单的模式来解决这个问题

<?php
class cUrlicue {

protected
$curl;

/* 创建 cURL 句柄 */

function __construct() {
$this->curl = curl_init();
$this->curl_init_opts();
curl_exec($this->curl);
}

/* 重新加载你的基本选项 */

function curl_init_opts() {
$opts[CURLOPT_PROTOCOLS] = CURLPROTO_FTP;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_USERPWD] = 'user:pass';
//...
curl_setopt_array($this->curl, $opts);
}

/* 在进行新的 cURL 调用时使用 */

function curl_exec($opts) {
curl_reset($this->curl); // 清除所有旧的选项
$this->curl_init_opts(); // 再次设置基本选项
curl_setopt_array($this->curl, $opts); // 设置你的新选项
return curl_exec($this->curl);
}

/* 你的任何 cURL 方法 */

function curl_get_whatever() {
$opts[CURLOPT_URL] = 'ftp://.../whatever';
//...
$result = $this->curl_exec($opts);
// ...
}
}
?>

然后:每次从你的任何方法调用 $this->curl_exec() 都会重置先前的选项,重新加载基本选项,添加你的新选项,并返回结果。否则,如果没有任何动态定义的内容,也可以将你的基本选项放入一个类属性,而不是在方法中。享受。=^_^=
To Top