PHP Conference Japan 2024

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 實例;先前需要的是 resource

範例

範例 #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); // 先前設定的 user-agent 不會被發送,它已被 curl_reset 重設

// 關閉句柄
curl_close($ch);
?>

備註

注意事項:

curl_reset() 也會重設以 curl_init() 參數指定的 URL。

參見

新增備註

使用者提供的備註 2 則備註

Waloon
8 年前
適用於 php < 5.5 的技巧

function curl_reset(&$ch){
$ch = curl_init();
}
dev at codesatori dot com
8 年前
如果您重複使用 cURL 句柄,並且想要確保沒有先前選項的殘留值,但又不想重設每次 cURL 呼叫所需的基礎設定(例如 FTP 詳細資訊),那麼這裡有一個簡單的模式可以解決這個問題

<?php
類別 cUrlicue {

保護的
$curl;

/* 建立 cURL 句柄 */

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

/* 重新載入您的基本選項 */

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

/* 在進行新的 cURL 呼叫時使用 */

函式 curl_exec($opts) {
curl_reset($this->curl); // 清除所有舊選項
$this->curl_init_opts(); // 再次設定基本選項
curl_setopt_array($this->curl, $opts); // 設定您的新選項
回傳 curl_exec($this->curl);
}

/* 您的任何 cURL 方法 */

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

然後:每次從您的任何方法呼叫 $this->curl_exec() 都會重置先前的選項、重新載入基本選項、新增您的新選項,並返回結果。或者,如果沒有定義任何動態內容,也可以將您的基本選項放入類別屬性中,而不是在方法中。祝您使用愉快。 =^_^=
To Top