Also ich versuche, alle JSON-Daten von einer API zu bekommen, aber ich kann nicht zuverlässig die Schleife zu Ende, während alle Daten erhalten. Hier ist der Code, den ich derzeit habePHP-Programm hängt, wenn cURL in während Schleife
$num = 1000;
$continue = TRUE;
$loops = 0;
while ($continue == TRUE AND $loops < 3) {
// initialize cURL session
$ch = curl_init($host . '/' . $service . '?limit=500' . '&offset=' . ($num)) or die("Could not connect to API.");
// set headers
$httpHeader = array(
'Content-Type: application/json;charset=UTF-8',
'Accept: application/json',
'SecureUrl: ' . $secureUrl,
'PrivateKey: ' . $privateKey,
'Token: ' . $token,
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
$json = json_decode($response, TRUE);
if (isset($json[0]["Key"])) {
$continue = FALSE;
}
$num += 500;
$loops++;
curl_close($ch);
}
Alle Variablen sind zuvor deklariert. Ich war in der Lage, die JSON-Daten zu bekommen, wenn ich die While-Schleife einmal num
eine bestimmte Anzahl erreicht, aber das wird nicht immer zuverlässig sein. Der Code stoppt die Ausgabe von JSON-Daten um die 3. oder 4. Ausführung und hängt sich dort für bis zu 5 Minuten auf, bevor er eine Reihe von Fehlern ausgibt.
Jede Hilfe wäre willkommen!
Edit: Ich habe mein Problem gefunden. Egal, was der Parameter meiner if-Anweisung ist, mein Programm weigert sich, $continue
zu FALSE
zu ändern. Ich habe meinen Code aktualisiert, wenn jemand nachvollziehen könnte, warum das großartig wäre. Beachten Sie, dass, selbst wenn ich den if-Parameter auf 0 == 0
setze, wird sich $continue
immer noch nicht ändern.
Edit 2: Ich habe alle meine Probleme gelöst.
Was sind die Fehler, die Sie bekommen? – aynber
Ich sehe nicht, wo Sie irgendwelche Daten ausgeben, Sie überschreiben Ihre Daten '$ json' mit jeder Schleife, von der ich nicht glaube, dass Sie sie machen wollen. – cmorrissey
@aynber "Offset-Betrag überschreitet die Gesamtzahl der Datensätze." – BrastaSauce