Beschreibung
Ich verwende Guzzle in meinem Laravel Projekt. Ich hatte einen Speicherabsturz, als ich eine Anfrage an eine API stelle, die eine große Nutzlast zurückgibt.cURL Fehler 28: Operation timed out nach 2000 Millisekunden mit 7.276.200 von 23.000.995 Bytes empfangen
Ich habe dies auf der Oberseite meiner CURL.php
Klasse. Ich habe get(), dass ich guzzle benutze.
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\FORCE_IP_RESOLVE;
use GuzzleHttp\DECODE_CONTENT;
use GuzzleHttp\CONNECT_TIMEOUT;
use GuzzleHttp\READ_TIMEOUT;
use GuzzleHttp\TIMEOUT;
class CURL {
public static function get($url) {
$client = new Client();
$options = [
'http_errors' => true,
'force_ip_resolve' => 'v4',
'connect_timeout' => 2,
'read_timeout' => 2,
'timeout' => 2,
];
$result = $client->request('GET',$url,$options);
$result = (string) $result->getBody();
$result = json_decode($result, true);
return $result;
}
...
}
Wenn ich es so in meiner Anwendung nennen, ist es eine große Nutzlast fordern (30000)
$url = 'http://site/api/account/30000';
$response = CURL::get($url)['data'];
ich diesen Fehler 28
cURL Fehler wurde immer: Operation timed out nach 2000 Millisekunden mit 7276200 von 23000995 empfangenen Bytes (siehe http://curl.haxx.se/libcurl/c/libcurl-errors.html)
Wie vermeide ich das?
Sollte ich diese Einstellungen erhöhen?
'connect_timeout' => 2,
'read_timeout' => 2,
'timeout' => 2,
Fragen
Wie würde man dies weiter gehen über und zu debuggen?
Ich bin offen für alle Vorschläge in diesem Moment.
Alle Hinweise/Vorschläge/hilft auf diesem werden sehr geschätzt!
Ja, erhöhen Sie Ihre Timeouts. 2 Sekunden scheinen nicht lang genug zu sein. – aynber
ohh ok. Ich dachte, dass das sonst diesen Fehler verursacht? – ihue
Nr. 'Zeitüberschreitung der Operation nach 2000 Millisekunden mit 7276200 von 23000995 empfangenen Bytes 'klingt wie es in der Lage ist, eine Verbindung mit dem Remote-Server herzustellen, und es hat begonnen, Daten herunterzuladen, aber nach' 2000 Millisekunden 'abgeschnitten, was 2 Sekunden ist. 'read_timeout' und' timeout' müssen viel länger sein. Versuchen Sie irgendwo zwischen 30-180 Sekunden, oder geben Sie es einfach nicht an und erlauben Sie es, der Serverstandard zu sein. – aynber