2017-10-09 2 views
2

J'ai une application php et j'en ai besoin pour prendre une grande réponse json depuis une URL. Avec curl, quand je l'utilise depuis le terminal tout se passe comme prévu. Mais php curl n'obtient pas le fichier entier. On dirait que c'est tronqué.comment obtenir des données volumineuses (json) à partir d'une URL spécifiée en PHP

La commande curl-je utiliser à partir du terminal est:

curl -v -H 'Accept-Encoding:gzip,deflate,sdch' resultsURL --compressed 

où resultsURL est l'URL que je veux obtenir le JSON.

Cela me donne généralement environ 10.000kb (9-10mb), mais à partir de php curl je reçois au plus 400-500kb.

Comment puis-je obtenir le fichier entier?

(exec est pas une option)

+0

vous exécutez le script php à partir du navigateur ou 'cli'? – maximkou

+0

J'utilise Firefox, y a-t-il une différence? –

+0

Ok, si vous appelez un script depuis le navigateur, la réponse @AZinkey doit vous aider. Si ce n'est pas un secret, quel est le but du téléchargement de ce fichier json? – maximkou

Répondre

0
set_time_limit(0); 
    $url = 'http://www.example.com/a-large-file.json'; 
    $path = '/path/to/a-large-file.json'; 
    $fp = fopen($path, 'w+'); 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 

    $data = curl_exec($ch); 

    curl_close($ch); 
    fclose($fp); 
+0

Ceci génère un fichier json vide. Et quand j'utilise les en-têtes que je fournis pour la compression en boucle, il sort au fichier ce que je recevais avant. –

+0

pouvez-vous partager votre lien de fichier json? – AZinkey

+0

Oui, le voici: http://api.travelpayouts.com/v1/flight_search_results?uuid=dcbc9d20-c3be-47f4-965f-d72961b76bb1 –