curl_share_init_persistent în PHP

cURL și email PHP 8.5+

Creează un obiect de partajare cURL care rămâne activ între cererile HTTP diferite servite de același proces PHP.

Sintaxă
curl_share_init_persistent(array $share_options): CurlSharePersistentHandle

Ce face curl_share_init_persistent

Un obiect obișnuit (curl_share_init) dispare la finalul scriptului. Cel persistent rămâne în procesul PHP-FPM și este refolosit de cererile următoare, deci conexiunile, cache-ul DNS și sesiunile TLS către un API nu mai trebuie refăcute la fiecare vizitator. Obiectele cu aceleași opțiuni sunt refolosite automat.

Opțiunile se dau o singură dată, ca tablou de constante CURL_LOCK_DATA_*. Cookie-urile nu sunt permise, pentru că ar ajunge de la un vizitator la altul.

Parametri

Parametru Descriere
$share_options Tabloul cu tipurile de date partajate, de exemplu [CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_CONNECT].

Ce returnează

Un obiect CurlSharePersistentHandle.

Exemple

Exemplul 1: Conexiuni refolosite între vizitatori

<?php
$share = curl_share_init_persistent([CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_CONNECT, CURL_LOCK_DATA_SSL_SESSION]);
echo get_class($share) . "\n";

$ch = curl_init("https://www.dexblog.ro/");
curl_setopt($ch, CURLOPT_SHARE, $share);

Rezultat

CurlSharePersistentHandle

Exemplul 2: Cookie-urile nu sunt permise

<?php
try {
    curl_share_init_persistent([CURL_LOCK_DATA_COOKIE]);
} catch (ValueError $e) {
    echo $e->getMessage();
}

Rezultat

curl_share_init_persistent(): Argument #1 ($share_options) must not contain CURL_LOCK_DATA_COOKIE because sharing cookies across PHP requests is unsafe

Greșeli frecvente

  • Te aștepți la efect în linia de comandă sau cu PHP rulat ca CGI. Persistența are sens doar într-un proces care servește mai multe cereri, cum este PHP-FPM.

Comenzi înrudite

  • curl_share_init: Creează un obiect prin care mai multe cereri cURL partajează cookie-uri, cache DNS sau conexiuni.
  • curl_share_setopt: Alege ce date sunt partajate între cererile cURL care folosesc un obiect de partajare.
  • curl_upkeep: Trimite mesaje de menținere pe conexiunile deschise ale unei cereri cURL, ca serverul să nu le închidă.