curl_share_init în PHP

cURL și email PHP 5.5+

Creează un obiect prin care mai multe cereri cURL partajează cookie-uri, cache DNS sau conexiuni.

Sintaxă
curl_share_init(): CurlShareHandle

Ce face curl_share_init

Implicit, fiecare cerere cURL are propriile cookie-uri și propriul cache DNS. Cu un obiect de partajare, cererile care îl folosesc (CURLOPT_SHARE) împart aceste date: de exemplu, autentificarea făcută de o cerere este văzută și de celelalte.

Ce se partajează alegi cu curl_share_setopt. Partajarea durează doar cât rulează scriptul; pentru partajare între cereri HTTP diferite există curl_share_init_persistent.

Ce returnează

Un obiect CurlShareHandle.

Exemple

Exemplul 1: Cookie-uri comune pentru două cereri

<?php
$share = curl_share_init();
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);

$login = curl_init("https://httpbin.org/cookies/set?sesiune=abc123");
curl_setopt_array($login, [CURLOPT_SHARE => $share, CURLOPT_COOKIEFILE => "", CURLOPT_RETURNTRANSFER => true]);
curl_exec($login);

$cont = curl_init("https://httpbin.org/cookies");
curl_setopt_array($cont, [CURLOPT_SHARE => $share, CURLOPT_COOKIEFILE => "", CURLOPT_RETURNTRANSFER => true]);
echo curl_exec($cont);

Rezultat real (necesită conexiune la internet)

{
  "cookies": {
    "sesiune": "abc123"
  }
}

Greșeli frecvente

  • Partajezi cookie-urile fără CURLOPT_COOKIEFILE. Motorul de cookie-uri al libcurl nu este pornit, iar cererile nu trimit cookie-urile. Setează CURLOPT_COOKIEFILE => "".

Comenzi înrudite

  • curl_share_setopt: Alege ce date sunt partajate între cererile cURL care folosesc un obiect de partajare.
  • curl_share_init_persistent: Creează un obiect de partajare cURL care rămâne activ între cererile HTTP diferite servite de același proces PHP.
  • curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.