Signatur
Beschreibung
curl_share_errno() liefert den Fehlercode der letzten Operation, die auf einem cURL-Share-Handle durchgeführt wurde. cURL-Share-Handles ermöglichen es, bestimmte Daten (z. B. DNS-Cache, Cookies, SSL-Sitzungen) zwischen mehreren cURL-Handles gemeinsam zu nutzen.
Im Fehlerfall gibt die Funktion einen Integer-Wert zurück, der einer der CURLSHE_*-Konstanten entspricht. Bei erfolgreicher vorheriger Operation wird CURLSHE_OK (0) zurückgegeben. Diese Funktion ist das Äquivalent von curl_errno() für normale cURL-Handles, jedoch speziell für Share-Handles konzipiert.
Typischerweise wird curl_share_errno() nach einem Aufruf von curl_share_setopt() verwendet, um festzustellen, ob die Konfiguration des Share-Handles erfolgreich war oder ein Fehler aufgetreten ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $share_handle Pflicht | CurlShareHandle | Ein gültiges cURL-Share-Handle, das zuvor mit curl_share_init() erstellt wurde. |
Rückgabewert
0 (CURLSHE_OK) bedeutet, dass kein Fehler aufgetreten ist. Andere Werte entsprechen den CURLSHE_*-Fehlerkonstanten (z. B. CURLSHE_BAD_OPTION, CURLSHE_IN_USE, CURLSHE_INVALID, CURLSHE_NOMEM).Beispiele
Fehlerprüfung nach curl_share_setopt()
<?php
// Share-Handle erstellen
$sh = curl_share_init();
// DNS-Cache zwischen Handles teilen
$result = curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
if (!$result) {
$errno = curl_share_errno($sh);
echo "Fehler beim Setzen der Share-Option. Fehlercode: " . $errno . PHP_EOL;
} else {
echo "DNS-Cache-Sharing erfolgreich konfiguriert." . PHP_EOL;
}
curl_share_close($sh);
Mehrere cURL-Handles mit gemeinsamem Cookie-Speicher
<?php
// Share-Handle erstellen und Cookies teilen
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
$errno = curl_share_errno($sh);
if ($errno !== CURLSHE_OK) {
echo "Fehler beim Konfigurieren des Sharings: " . $errno . PHP_EOL;
curl_share_close($sh);
exit(1);
}
// Erstes cURL-Handle
$ch1 = curl_init('https://example.com/login');
curl_setopt($ch1, CURLOPT_SHARE, $sh);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
// Zweites cURL-Handle teilt denselben Cookie-Speicher
$ch2 = curl_init('https://example.com/profile');
curl_setopt($ch2, CURLOPT_SHARE, $sh);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
$response1 = curl_exec($ch1);
$response2 = curl_exec($ch2);
curl_close($ch1);
curl_close($ch2);
curl_share_close($sh);
echo "Anfragen erfolgreich mit gemeinsamem Cookie-Speicher ausgeführt." . PHP_EOL;
// Wichtig · Fallstricke
Verfügbarkeit: curl_share_errno() wurde in PHP 7.3.0 eingeführt. In früheren PHP-Versionen ist diese Funktion nicht verfügbar.
CURLSHE_*-Konstanten: Die zurückgegebenen Fehlercodes entsprechen den internen libcurl-Fehlercodes für Share-Handles. Folgende Konstanten sind relevant: CURLSHE_OK (0, kein Fehler), CURLSHE_BAD_OPTION (1, ungültige Option), CURLSHE_IN_USE (2, Handle wird gerade verwendet), CURLSHE_INVALID (3, ungültiges Handle), CURLSHE_NOMEM (4, Speicherzuweisung fehlgeschlagen).
Thread-Sicherheit: Beim Einsatz von cURL-Share-Handles in Multi-Thread-Umgebungen müssen CURLSHOPT_LOCKFUNC und CURLSHOPT_UNLOCKFUNC gesetzt werden, um Race Conditions zu vermeiden. In typischen PHP-Webanwendungen ist dies jedoch selten relevant.