Start · Sprachen · PHP · Referenz · curl_share_errno

curl_share_errno

Funktion

Gibt den numerischen Fehlercode der zuletzt fehlgeschlagenen Operation auf einem <code>CurlShareHandle</code> zurück.

seit PHP 7.3.0 Kategorie: http

Signatur

curl_share_errno(CurlShareHandle $share_handle): int

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

Typ
int
Beschreibung
Gibt den numerischen Fehlercode der letzten Operation zurück. 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);
DNS-Cache-Sharing erfolgreich konfiguriert.

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;
Anfragen erfolgreich mit gemeinsamem Cookie-Speicher ausgeführt.

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