2016-04-25 9 views
0

Ich habe eine PHP, die einige MySQL-Datentabellen bereinigen soll (Befehl abschneiden), und einige Meldungen ausgeben, die anzeigen, dass die Aufgabe abgeschlossen wurde (ECHO-Anweisungen).PHP-Echo-Anweisungen auftreten nach MySQLI-Befehle

Das PHP lädt dann mehrere CSV-Dateien über den Befehl LOAD DATA INFILE in die kürzlich bereinigten Datenbanktabellen. Dies wird gefolgt von einigen Echo-Anweisungen, um die abgeschlossene Aufgabe anzuzeigen.

Das Problem, das ich habe, ist, dass alle Ausgabe auf dem Bildschirm ist nur, nachdem die MYSQL Arbeit abgeschlossen ist. Ich möchte, dass die Echo-Anweisungen einem MYSQL-Prozess vorausgehen, der eine Minute oder länger dauern kann, damit der Benutzer weiß, dass der Prozess fortschreitet und einige Zeit dauern kann.

echo "<center><strong>Cleaning up tables in preparation of importing data files...<strong></center><br>"; 

//select the database we are going to be using 
mysqli_select_db($conn, "database"); 

//truncate (empty) the three tables 
mysqli_query($conn, 'TRUNCATE TABLE firsttable;'); 
mysqli_query($conn, 'TRUNCATE TABLE secondtable;'); 
mysqli_query($conn, 'TRUNCATE TABLE thirdtable;'); 

//provide feedback on process 
echo "<center><strong>Tables cleaned!</strong></center><br>"; 

//queries which will load datafiles into the tables 
$query = "LOAD DATA INFILE \"D:/wamp64/www/folder/firsttable.csv\" INTO TABLE altoccurrences COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES"; 
$query2 = "LOAD DATA INFILE \"D:/wamp64/www/folder/secondtable.csv\" INTO TABLE altimages COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES"; 
$query3 = "LOAD DATA INFILE \"D:/wamp64/www/folder/thirdtable.csv\" INTO TABLE altidentifications COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES"; 

//send queries to MySQL and check for potential errors. 
$result = mysqli_query($conn, $query) or die ('Could not connect to mysqli: ' . mysqli_error($conn)); 
$result2 = mysqli_query($conn, $query2) or die ('Could not connect to mysqli: ' . mysqli_error($conn)); 
$result3 = mysqli_query($conn, $query3) or die ('Could not connect to mysqli: ' . mysqli_error($conn)); 

//provide feedback on process 
echo "<center><h2><strong>Your Files Have Been Inserted into Database!</strong></h2></center><br>"; 

Antwort

1

PHP puffert den Inhalt normalerweise vor dem Senden. Probieren Sie nach jedem Echo den folgenden Code aus, um zu versuchen, PHP zum sofortigen Senden der Daten zu zwingen.

@flush(); 
+0

Nur mit flush(); selbst war nicht genug. Ich musste verwenden: ob_flush(); gefolgt von flush(); um vor langen mysql-Prozessen ausgegeben zu werden. – QuePID

+0

Gefallen. Schön, dass es dich in die richtige Richtung geführt hat. Danke für die Annahme. – dAngelov