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ă.