Forum Clubic

Download d'un fichier TXT pour insertion BDD [Résolu]

Comment récupérer un fichier TXT à une adresse type “http:/www.machin.com/truc/fichier.txt” pour pouvoir après faire un LOAD DATA INFILE ?

[cpp]$fo = fopen(‘sql.txt’ , ‘a’);
fwrite( $fo , file_get_contents( “http:/www.machin.com/truc/fichier.txt” ) );
fclose( $fo );
mysql_query( 'LOAD DATA INFILE ‘sql.txt’ );[/cpp]
Si j’ai bien comprit.

tu as bien compris.
Avec ce bout de programe, je récupère bien mon fichier TXT mais le programme se bloque apparement entre la ligne 2 et la 3. il ne veut pas passer sur le LOAD DATA…

Le probleme , c’est que faut savoir quel est pour MySQL, la racine du repertoire quand tu fait un INFILE ‘toto.txt’.
Je suis pas sur que ce sois le meme repertoire que le dossier web, il y a peut etre une requete? a envoyer avant pour lui indiqué le dossier …

le fichier.txt se positionne à l’endroit où j’ai mes autres fichiers TXT qui eux sont bien traités par un INFILE.
De plus, j’ai insérer un ‘echo’ entre fclose et mysql_query (pour essai) qui ne s’affiche pas.

Le fichier est bien crée avec les données du fichier distant ( url ) ?

oui le fichier se crée bien, je peux le lire avec notepad.
j’ai rajouté un echo juste avant fclose, et il ne s’affiche pas.
on dirait que fwrite attend la fin du fichier mais il ne le voit pas.

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

UP

up

Envois plus de code, je comprent pas pk ca marcherais pas la …

[cpp]
echo “je télécharge”;

$fo = fopen(“xxxxxxx.txt” , “w”);
fwrite ( $fo , file_get_contents( “http://www.xxxxxxxx/xxxxxx/BDD/xxxxxxxx.txt” ) );
echo “je v fermer”;
fclose( $fo );

echo “j’ai fini de téléchargé”;

$sql1 = ‘LOAD DATA LOCAL INFILE xxxxx.txt REPLACE INTO TABLE xxxx
. ’ FIELDS TERMINATED BY ‘|’’
. ’ ENCLOSED BY ‘"’’
. ’ ESCAPED BY ‘\\’’
. ’ LINES TERMINATED BY ‘\n’’
. ’ ( idfournisseur , descriptioncourt, autreid , categorie , liensans , lienvignette , prix , prixbarre , description )’;

mysql_query($sql1, $xxxxxxx) or die(mysql_error());
[/cpp]

Les echos sont là pour suivre le déroulement à l’écran

il ne passe pas à [cpp]echo “je v fermer”;[/cpp]
Je verrais les réponses ce soir car le boulot me rappelle.

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

up

C’est surment qu’il arrive pas a trouvé le EOF, tu est sur que ton fichier distant n’est pas corompu ?

le fichier se transfert bien puisque j’arrive à le lire

remplace fwrite ( $fo , file_get_contents( “http://www.xxxxxxxx/xxxxxx/BDD/xxxxxxxx.txt” ) ); par

(string) $datas = file_get_contents( “http://www.xxxxxxxx/xxxxxx/BDD/xxxxxxxx.txt” );
if(!$datas) die(“erreur file_get_contents”);
fwrite ( $fo , $datas );

voir si ça die

aucun die avec cette méthode, reste toujours bloqué.
Par contre j’ai essayé avec un autre fichier TXT (donc une autre adresse) et ça fonctionne.
Est ce un problème de taille fichier (51Ko contre plus de 3Mo) ou un problème sur le fichier même?

C’est normal que a 3Mo , ca prenne du tps, et si c’est vraiment bloqué , alors oui , c’est un probleme qui vien du fichier :stuck_out_tongue:

au début de ton script, mets
set_time_limit([temps_maxi_d_execution_du_script_en_secondes]);
c’est utile pour de gros fichiers :wink: