2013-02-19 5 views
1

Quelle est la bonne façon de télécharger comme 50+ fichiers PDF en utilisant curl PHP?PHP Curl télécharger des fichiers PDF

Ci-dessous le code que je utilise:

$fp = fopen("test.pdf", 'w');   
$ch = curl_init(); 

curl_setopt($ch,CURLOPT_PROXY,"http://test:123"); 
curl_setopt($ch,CURLOPT_PROXYPORT,123); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 500); 
curl_setopt($ch,CURLOPT_URL,"http://download/test.pdf"); 
curl_setopt($ch, CURLOPT_FILE, $fp); 

curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

Le problème est parfois, 2-3 fichiers PDF ne sont pas correctement téléchargés (0-1 octets). Une idée de pourquoi c'est instable? Dois-je inclure autre chose dans le code ci-dessus?

Merci à l'avance

Répondre

0

requêtes Web en général peuvent être assez douteux, même à partir d'un navigateur et une bonne connexion. Il pourrait y avoir quelques choses qui ne vont pas ici du site distant refusant votre connexion, à l'exécution simultanée de votre fichier php à partir de plusieurs endroits. Jetez un oeil à:

http://www.php.net/manual/en/function.curl-error.php

pour essayer d'imprimer des messages d'erreur quelque part pour l'analyse sur curl_exec. Si c'est quelque chose comme un problème de connexion, vous devrez peut-être introduire un mécanisme de relance, Vous ne savez pas si votre script est susceptible d'être exécuté en parallèle à partir de plusieurs emplacements, mais si c'est le cas, vous devriez regarder http://php.net/manual/en/function.uniqid.php en tant que http://php.net/manual/en/function.uniqid.php un moyen de générer un nom de fichier raisonnablement unique en premier, tentative de téléchargement, puis seulement déplacer le fichier vers le fichier de destination prévu si aucune erreur n'est renvoyée, sinon, réessayez jusqu'à X fois. En ce qui concerne la stabilité de Curl, je l'utilise fréquemment et cela ne s'est pas avéré instable pour moi, mais je ne suis pas en train d'extraire des données binaires. J'espère que la détection d'erreur et la sortie des messages d'erreur éclairciront la cause de cette situation.

Questions connexes