Envoi au fur et à mesure au navigateur

Eléphanteau du PHP | 11 Messages

12 mai 2010, 13:16

Bonjour,

J'ai créé un script d'export de fichier vers un FTP qui fonctionne bien, mais j'aimerai qu'il m'affiche le déroulement au fur et à mesure de l'avancement, car pour le moment il m'affiche ce qui suit à la fin de l'éxécution du script :
2010-05-12T11:27:38+02:00 - Connexion au serveur XXX ...
2010-05-12T11:27:38+02:00 - Serveur XXX connecté
2010-05-12T11:27:38+02:00 - Entre dans le dossier "XXX"
2010-05-12T11:27:40+02:00 - Création du fichier "XXX.csv" ...
2010-05-12T11:27:40+02:00 - Fichier "XXX.csv" créé avec succès
2010-05-12T11:27:40+02:00 - Transfert du fichier "XXX.csv" ...
2010-05-12T11:27:40+02:00 - Fichier "XXX.csv" envoyé avec succès
2010-05-12T11:27:40+02:00 - Déconnexion
Voila mon script :

Code : Tout sélectionner

<?php $serveur = 'XXX'; $FTP = ftp_connect($serveur); if (!$FTP) { msg('Connexion impossible'); exit(); } else { msg('Connexion au serveur '.$serveur.' ...'); } $login = 'XXX'; $mdp = 'XXX'; $conFTP = ftp_login($FTP, $login, $mdp); if (!$conFTP) { msg('Connexion impossible'); exit(); } else { msg('Serveur '.$serveur.' connecté'); } $dir = @ftp_chdir($FTP, 'XXX'); if (!$dir) { $dir = @ftp_mkdir($FTP, 'XXX'); if (!$dir) { ftp_quit($FTP); msg('Création du dossier "XXX" impossible'); exit(); } else { msg('Création du dossier "XXX"'); } $dir = ftp_chdir($FTP, 'XXX'); if (!$dir) { ftp_quit($FTP); msg('Impossible d\'accéder au dossier "XXX" '); exit(); } } msg('Entre dans le dossier "XXX"'); $fichier = 'XXX_'.date('d-m-Y').'.csv'; $chemin = './export/'.$fichier; // Connexion à la base de données include("XXX.php"); // On redige la requete $query = 'SELECT * FROM VW_STOCK_METAUX'; // On verifie la validité de la requete $stid = oci_parse($conn, $query); if (!$stid) { $e = oci_error($conn); echo htmlentities($e['message']); exit(); } // On execute la requete $r = oci_execute($stid, OCI_DEFAULT); if (!$r) { $e = oci_error($stid); echo htmlentities($e['message']); exit(); } msg('Création du fichier "'.$fichier.'" ...'); ob_start(); // Démarage du buffer echo 'ARTICLE;LIBELLE;FAM;DATE;STOCK;LIEU;EMPLACEMENT '; while ($row = oci_fetch_row($stid)) { echo $row[0].';'; echo $row[1].';'; echo $row[2].';'; echo $row[3].';'; echo $row[4].';'; echo $row[5].';'; echo $row[6].' '; } $monfichier = @fopen($chemin, 'w+'); // Ouverture du fichier (ou création si inexistant) if (!monfichier) { ob_end_clean(); msg('La création du fichier "'.$fichier.'" à échouée'); msg('Déconnexion'); ftp_quit($FTP); exit(); } $ok = @fwrite($monfichier, ob_get_contents()); // Ecriture du buffer dans le fichier if (!ok) { ob_end_clean(); msg('L\'écriture dans le fichier "'.$fichier.'" à échouée'); msg('Déconnexion'); ftp_quit($FTP); exit(); } fclose($monfichier); // Fermeture du fichier ob_end_clean(); // Vide le buffer msg('Fichier "'.$fichier.'" créé avec succès'); msg('Transfert du fichier "'.$fichier.'" ...'); $env = ftp_put($FTP, $fichier, $chemin, FTP_BINARY); if ($env) { if (filesize($chemin) == ftp_size($FTP, $fichier)) { msg('Fichier "'.$fichier.'" envoyé avec succès'); } else { msg('Le fichier "'.$fichier.'" semble avoir été corrompu lors de l\'envoi au serveur FTP'); } } else { ftp_quit($FTP); msg('Echec de l\'envoi du fichier "'.$fichier.'"'); exit();; } msg('Déconnexion'); ftp_quit($FTP); function msg ($msg) { echo date('c').' - '.$msg.'<br>'; } ?>
Merci d'avance pour toute réponse

ViPHP
ViPHP | 5462 Messages

12 mai 2010, 13:20


Eléphanteau du PHP | 11 Messages

12 mai 2010, 13:47

Merci , la solution était effectivement :
  • ob_end_flush(); -> en début de script
  • flush(); -> à chaque affichage voulu
J'avais plutôt regardé du côté de ob_start();