Signatur
Beschreibung
curl_share_strerror() übersetzt einen numerischen Fehlercode eines cURL-Share-Handles in eine lesbare englischsprachige Fehlermeldung. Die Funktion ist das Share-Handle-Äquivalent zu curl_strerror() und arbeitet speziell mit Fehlercodes, die beim Umgang mit curl_share_init() und verwandten Funktionen auftreten können.
cURL-Share-Handles ermöglichen es, bestimmte Daten (z. B. Cookies, DNS-Cache, SSL-Session-Daten) zwischen mehreren cURL-Handles zu teilen. Treten dabei Fehler auf, liefern Funktionen wie curl_share_setopt() entsprechende Fehlercodes, die mit curl_share_strerror() in verständliche Texte umgewandelt werden können.
Die Fehlercodes entstammen der CURLSHcode-Enumeration der libcurl-Bibliothek. Typische Fehlercodes sind beispielsweise CURLSHE_BAD_OPTION (ungültige Option) oder CURLSHE_IN_USE (Handle wird gerade verwendet). Der Rückgabewert ist null, wenn kein passender Fehlertext gefunden werden kann.
Diese Funktion eignet sich besonders für die Fehlerdiagnose und das Logging in Anwendungen, die mehrere cURL-Verbindungen koordinieren und gemeinsam genutzte Ressourcen über ein Share-Handle verwalten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $error_code Pflicht | int | Ein numerischer cURL-Share-Fehlercode (CURLSHcode), wie er z. B. von curl_share_errno() zurückgegeben wird. |
Rückgabewert
null zurückgegeben.Beispiele
Fehlermeldung eines Share-Handles ausgeben
<?php
// Share-Handle erstellen
$sh = curl_share_init();
// Absichtlich eine ungültige Option setzen, um einen Fehler zu erzeugen
$result = curl_share_setopt($sh, 9999, true); // 9999 = ungültige Option
if ($result !== true) {
$errorCode = curl_share_errno($sh);
$errorMessage = curl_share_strerror($errorCode);
echo "Share-Fehlercode: " . $errorCode . PHP_EOL;
echo "Fehlermeldung: " . $errorMessage . PHP_EOL;
}
curl_share_close($sh);
Gemeinsam genutzten DNS-Cache mit Fehlerbehandlung einrichten
<?php
$sh = curl_share_init();
// DNS-Cache zwischen Handles teilen
$result = curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
if ($result !== true) {
$errorCode = curl_share_errno($sh);
echo "Fehler beim Konfigurieren des Share-Handles: "
. curl_share_strerror($errorCode) . PHP_EOL;
curl_share_close($sh);
exit(1);
}
// Zwei cURL-Handles erstellen und das Share-Handle zuweisen
$ch1 = curl_init('https://example.com');
$ch2 = curl_init('https://example.org');
curl_setopt($ch1, CURLOPT_SHARE, $sh);
curl_setopt($ch2, CURLOPT_SHARE, $sh);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
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 "Beide Anfragen abgeschlossen, DNS-Cache wurde geteilt." . PHP_EOL;
// Wichtig · Fallstricke
Die zurückgegebenen Fehlermeldungen sind stets auf Englisch, da sie direkt aus der libcurl-Bibliothek stammen. Eine Lokalisierung muss bei Bedarf selbst implementiert werden.
Zu beachten ist, dass curl_share_errno() erst nach einem fehlgeschlagenen curl_share_setopt()-Aufruf einen aussagekräftigen Fehlercode liefert. Bei unbekannten Fehlercodes gibt curl_share_strerror() null zurück – entsprechende Null-Prüfungen im Code sind daher empfehlenswert.