Start · Sprachen · PHP · Referenz · curl_multi_strerror

curl_multi_strerror

Funktion

Gibt eine menschenlesbare Fehlerbeschreibung für einen cURL-Multi-Fehlercode zurück.

seit PHP 5.5.0 Kategorie: http

Signatur

curl_multi_strerror(int $error_code): string|false

Beschreibung

curl_multi_strerror() wandelt einen numerischen Fehlercode, wie er von cURL-Multi-Funktionen zurückgegeben wird, in eine lesbare englische Fehlerbeschreibung um. Dies erleichtert das Debugging beim parallelen Ausführen mehrerer HTTP-Anfragen über die cURL-Multi-Schnittstelle erheblich.

Die Funktion ist das Pendant zu curl_strerror() für reguläre (nicht-Multi-)Fehler und zu curl_multi_errno(), das den letzten Fehlercode eines Multi-Handles liefert. Typischerweise wird sie eingesetzt, um nach einem Fehler in einer curl_multi_exec()-Schleife eine aussagekräftige Fehlermeldung auszugeben oder zu protokollieren.

Die gültigen Fehlercodes entsprechen den CURLM_*-Konstanten der libcurl-Bibliothek. Wird ein ungültiger oder unbekannter Fehlercode übergeben, gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$error_code Pflicht int Ein numerischer cURL-Multi-Fehlercode, z. B. der Rückgabewert von curl_multi_errno() oder der Wert einer CURLM_*-Konstante.

Rückgabewert

Typ
string|false
Beschreibung
Gibt eine englische Fehlerbeschreibung als string zurück, wenn der Fehlercode bekannt ist. Bei einem ungültigen oder unbekannten Fehlercode wird false zurückgegeben.

Beispiele

Fehlermeldung nach fehlgeschlagenem curl_multi_exec() ausgeben

<?php
$mh = curl_multi_init();

$ch1 = curl_init('https://example.com');
$ch2 = curl_init('https://example.org');

curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

$running = null;
do {
    $status = curl_multi_exec($mh, $running);
    if ($status !== CURLM_OK) {
        $errorCode = curl_multi_errno($mh);
        $errorMessage = curl_multi_strerror($errorCode);
        echo "cURL Multi Fehler ({$errorCode}): {$errorMessage}" . PHP_EOL;
        break;
    }
    curl_multi_select($mh);
} while ($running > 0);

curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

echo curl_multi_getcontent($ch1);
echo curl_multi_getcontent($ch2);

curl_close($ch1);
curl_close($ch2);

Direkte Verwendung mit CURLM_*-Konstanten

<?php
// Bekannten Fehlercode nachschlagen
$codes = [
    CURLM_OK,
    CURLM_BAD_HANDLE,
    CURLM_BAD_EASY_HANDLE,
    CURLM_OUT_OF_MEMORY,
    CURLM_INTERNAL_ERROR,
];

foreach ($codes as $code) {
    $description = curl_multi_strerror($code);
    echo "Code {$code}: {$description}" . PHP_EOL;
}

// Ungültiger Fehlercode
$unknown = curl_multi_strerror(9999);
var_dump($unknown);
Code 0: No error Code 1: Invalid multi handle Code 2: Invalid easy handle Code 3: Out of memory Code 4: Internal error bool(false)

// Wichtig · Fallstricke

Die zurückgegebenen Fehlermeldungen sind immer auf Englisch, da sie direkt aus der libcurl-Bibliothek stammen. Eine Lokalisierung in andere Sprachen ist nicht vorgesehen.

Nicht zu verwechseln mit curl_strerror() (für reguläre Easy-Handle-Fehler, CURLE_*) und curl_share_strerror() (für Share-Handle-Fehler, CURLSHE_*). Jeder Handle-Typ hat seine eigene Fehlercode-Palette.