PHP 8.4.2 Released!

curl_reset

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

curl_resetlibcurl セッションハンドルのすべてのオプションをリセットする

説明

curl_reset(CurlHandle $handle): void

指定した cURL ハンドルに設定されているすべてのオプションを初期化してデフォルト値に戻します。

パラメータ

handle

curl_init() が返す cURL ハンドル。

戻り値

値を返しません。

変更履歴

バージョン 説明
8.0.0 handleCurlHandle クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、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 も初期化します。

参考

add a note

User Contributed Notes 2 notes

up
10
Waloon
8 years ago
Hack for php < 5.5 :

function curl_reset(&$ch){
$ch = curl_init();
}
up
1
dev at codesatori dot com
8 years ago
If you're reusing a cUrl handle and want to ensure there's no residue from previous options -- but are frustrated with resetting the basics (e.g. FTP details) needed for each cURL call -- then here's an easy pattern to fix that:

<?php
class cUrlicue {

protected
$curl;

/* Create the cURL handle */

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

/* Reload your base options */

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

/* Use when making a new cURL call */

function curl_exec($opts) {
curl_reset($this->curl); // clears all old options
$this->curl_init_opts(); // sets base options again
curl_setopt_array($this->curl, $opts); // sets your new options
return curl_exec($this->curl);
}

/* Your whatever cURL method */

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

Then: each call to $this->curl_exec() from your whatever-method resets the previous options, reloads the base options, adds in your new options, and returns the result. Otherwise, can also put your base options into a class property, instead of in-method, if there's nothing dynamic being defined. Enjoy. =^_^=
To Top