Detectarea erorilor de timeout PHP curl (Programare, Php, Curl, Gestionarea Erorilor, Timeout)

morteza kavakebi a intrebat.

Folosesc curl pentru a efectua o cerere HTTP ca aceasta:

$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

$data = curl_exec($ch);
curl_close($ch);

Cum pot verifica dacă a apărut o eroare și dacă a fost o eroare de timeout?

Comentarii

  • Curl sau Divergence? –  > Por MR_BD.
2 răspunsuri
Jason McCreary

Utilizați curl_errno()

Cod 28 este timeout.

Comentarii

  • Care se numește „CURLE_OPERATION_TIMEOUTED”. –  > Por COil.
  • TIMEOUTED‽ Serios, WTF este în neregulă cu acești oameni? Doar pentru a fi clar, documentația php.net (corect) listează acest nume nefericit de constantă. curl.haxx.se are o gramatică mai bună, dar din păcate php-curl nu va recunoaște CURLE_OPERATION_TIMEDOUT. –  > Por Lambart.
  • @Lambart se pare că CURLE_OPERATION_TIMEOUTED a fost numele inițial al constantei folosite de curl, pe care apoi l-au schimbat în CURLE_OPERATION_TIMEDOUT, păstrându-l în același timp pe primul ca un alias acum nedocumentat. Cea mai recentă versiune a PHP le acceptă pe amândouă; consultați comentariul de la php.net/manual/en/curl.constants.php#117928 pentru o scurtă istorie. –  > Por Mark Amery.
  • @MarkAmery mă bucur că în sfârșit au rezolvat asta. –  > Por Lambart.
user7744547

puteți verifica numărul de eroare și descrierea acesteia astfel:

// Check if any error occurred
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}

Comentarii

  • dacă folosiți curl ca un obiect, ar fi mult mai frumos. – user7744547