2016-04-25 8 views
0

私は、いくつかのMySQLデータテーブル(truncateコマンド)をクリーンアップし、タスクが完了したことを示すいくつかのメッセージ(ECHO文)を出力するためのPHPを持っています。MySQL Eコマンドの後にPHPエコー文が発生する

PHPは、LOAD DATA INFILEコマンドを使用して、最近クリーニングされたデータベーステーブルに複数のCSVファイルを読み込みます。これには、タスクが完了したことを示すいくつかのecho文が続きます。

私が抱えている問題は、MYSQLの作業が完了した後にのみ、すべての出力が画面に表示されることです。 echo文をMYSQLプロセスの前に置いて、プロセスが進行中であることを知り、時間がかかることがあるように、1分以上かかることがあります。

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>"; 

答えて

1

PHPは通常、コンテンツをバッファリングしてから送信します。各エコー後に次のコードを試して、PHPがデータをすぐに送信するようにしてください。

@flush(); 
+0

flush()を使用するだけです。それだけでは不十分でした。私はob_flush()を使う必要がありました。続いてflush();長いmysqlプロセスの前に出力を持っています。 – QuePID

+0

Gotcha。まあ、それは正しい方向にあなたを連れてうれしい。受け入れてくれてありがとう。 – dAngelov

関連する問題