2015-05-07 4 views
5

Ich versuche, Json-Daten mit CURL zu posten. Die Idee ist: Falls die URL nicht erreichbar ist (zum Beispiel Fehler bei der Internetverbindung), versuchen Sie weiterhin, den JSON zu posten, während Sie erfolgreich sind. Es funktioniert, aber wenn ich es in die While-Schleife einfüge, wird es nur einmal ausgeführt. Was mache ich falsch?JSON Post mit CURL von einer While-Schleife

$jsonDataEncoded = json_encode($event); 
echo $jsonDataEncoded; 
echo "\n"; 

$send_failure = true; 

while ($send_failure) { 

$url = "a";// intentionally inaccessible url 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($jsonDataEncoded))); 
$result = curl_exec($ch); 
if(curl_errno($ch)){ 
    throw new Exception(curl_error($ch)); 

} else {$send_failure = false;} 
return $result; 

} 
+5

throw (ohne try catch) und return beendet beide die Ausführung der aktuellen Funktion. Vorausgesetzt, dass das eine oder das andere bei der ersten Iteration der Schleife passiert, werden Sie nie darüber hinaus kommen. –

+0

Haben Sie versucht, die cURL-Verbindung am Ende jeder Schleife zu schließen? curl_close ($ ch); – realplay

Antwort

0

Sie müssen den Wert in $ result drucken und überprüfen, indem Sie var_dump ($ result); . Wenn ein Verbindungsfehler vorliegt, wird der Fehlercode zurückgegeben, den Sie im IF-Zustand manuell überprüfen können. Hoffe das könnte dir helfen.