CascadiaPHP 2024


(PHP 5, PHP 7, PHP 8)

curl_copy_handleBir cURL tanıtıcısını tüm tercihleriyle kopyalar


curl_copy_handle(CurlHandle $tanıtıcı): CurlHandle|false

Bir cURL tanıtıcısını tercihlerini koruyarak kopyalar.

Bağımsız Değişkenler


curl_init() işlevinden dönen bir cURL tanıtıcısı.

Dönen Değerler

Yeni bir cURL tanıtıcısı, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0tanıtıcı için artık bir CurlHandle örneği bekleniyor; evvelce, resource türünde bir değer beklenirdi.
8.0.0 Başarı durumunda bu işlev artık bir CurlHandle örneği döndürüyor, evvelce resource türünde bir değer dönerdi.


Örnek 1 - Bir cURL tanıtıcısının kopyalanması

// Yeni bir cURL özkaynağı oluşturalım
$ct = curl_init();

// URL'yi ve ilgili seçenekleri belirtelim
curl_setopt($ct, CURLOPT_URL, '');
curl_setopt($ct, CURLOPT_HEADER, 0);

// tanıtıcıyı kopyalayalım
$ch2 = curl_copy_handle($ct);

// URL'yi tarayıcıya aktaralım

// cURL özkaynaklarını kapatıp sistem özkaynaklarını serbest bırakalım

add a note

User Contributed Notes 3 notes

administrator at proxy-list dot org
16 years ago
There is some internal curl error (CURLE_FAILED_INIT) when you are trying to use just copied curl handle in curl_multi_add_handle(). I have checked the same problematic PHP code but with little difference: instead of creating curl’s copy I have used the original one (template). As I expect code works without any error. I think curl_multi_* along with curl_copy_handle() is still raw and needs some improvements.

With best wishes

Vitali Simsive
17 years ago
You can use it for some kind of templates:

= array();
$ch[0] = curl_init();
curl_setopt($ch[0], CURLOPT_URL, '');
curl_setopt($ch[0], CURLOPT_HEADER, 0);
curl_setopt($ch[0], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch[0], CURLOPT_FOLLOWLOCATION, 1);

$ch[1] = curl_copy_handle($ch[0]);
curl_setopt($ch[1], CURLOPT_URL, '');

$ch[2] = curl_copy_handle($ch[0]);
curl_setopt($ch[2], CURLOPT_URL, '');

/* And so on, when you need to get number of pages with same parameters... */

ac221 at sussex dot ac dot uk
16 years ago
Hmm I don't have a problem with this, using PHP 5.2.5 libcurl 7.16.3 maybe it's been fixed ...

I am m having trouble getting curl_copy_handle to copy all the curlopts across though...

protected function curlMultiPrime(array $reqArr){
// Store the request array so we can reinitialise the multi handle
$this->reqArr = $reqArr;
// Close existing curl uni handles
foreach($reqArr as $curlConf){
if(!($curlConf instanceof curlConfRequest ))
throw new curlConfException('All objects passed to configure requests must be instances of curlConfRequest.',curlConfException::CURL_INVALID_CONF_OBJ);
if(!$cch = curl_copy_handle($this->curlHandle)){
throw new curlException('Failed to clone template curl handle.',$this->curlHandle);
if(curl_multi_add_handle($this->curlMultiHandle,$cch) === 0){
$this->curlUniHandleRef[] = $cch;
throw new curlException('Failed to add curl handle to multi stack.',$cch);
To Top