2016-05-03 19 views
2

Ich habe ein Szenario. Hier verwende ich Curl für den Zugriff auf eine API. Wenn API nicht zugänglich ist, muss ich eine Benachrichtigungs-E-Mail senden. Wie kann ich überprüfen, ob ein Timeout für die Anfrage vorliegt?Wie überprüfen API-Timeout Timeout mit Curl?

Hier ist mein Code.

$alerthttp1 = array(); 
    $string = 'somestring'; 
    $key = md5($string); 
    $service_url = 'www.someurl.com/'.$key; 

    $curl = curl_init($service_url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 300); 
    $curl_response = curl_exec($curl); 
    $curl_errno = curl_errno($curl); 
    $curl_error = curl_error($curl); 

    error_log(json_encode($curl_errno)); 
    error_log(json_encode($curl_error)); 

    if(curl_error($curl) || $curl_response === false || $curl_errno > 0) 
    { 
     $info = curl_getinfo($curl); 
     hlog_errorlog('error occured during curl exec - ' . var_export($info)); 
     hlog_errorlog('error -----------> '. $curl_error); 
     curl_close($curl); 

     $alerthttp1[] = array('status' => 'FAILED');//for email alert 
    } 

Bitte schlagen Sie mir vor, die beste Art der Codierung.

Danke

+1

Überprüfen Sie einfach den HTTP-Statuscode des Anrufs. http://php.net/manual/en/function.curl-getinfo.php – Joze

Antwort

2

Try CURLOPT_CONNECTTIMEOUT zu verwenden, anstatt CURLOPT_TIMEOUT CURLOPT_CONNECTTIMEOUT ist die maximale Zeit in Sekunden, die die Verbindung zum Server machen darf.

0

Nein, Sie können es nicht mit CURL wissen. Fragen Sie nach API-Unterstützung. Oder wählen Sie die Timeout-Zeit selbst aus. Normalerweise sind es 30 Sekunden.

+0

CURLOPT_CONNECTTIMEOUT teilt cURL die maximale Zeit mit, die auf den Abschluss der Verbindung gewartet wird, damit sie funktioniert –