【问题标题】:PHP Echo Statements Occurring After MySQLI CommandsMySQLI 命令后发生的 PHP Echo 语句
【发布时间】:2023-03-21 07:40:02
【问题描述】:

我有一个 php,用于清理一些 MySQL 数据表(truncate 命令),并输出到屏幕上一些指示该任务已完成的消息(ECHO 语句)。

然后 PHP 通过 LOAD DATA INFILE 命令将几个 CSV 文件加载到最近清理的数据库表中。这后面是几个 echo 语句,表示任务已完成。

我遇到的问题是所有输出到屏幕都是在 MYSQL 工作完成之后。我希望在 MYSQL 进程之前使用 echo 语句,这可能需要一分钟或更长时间,以便用户知道该进程正在进行中并且可能需要一些时间。

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

【问题讨论】:

    标签: php output echo


    【解决方案1】:

    PHP 通常会在发送内容之前对其进行缓冲。在每次回显后尝试以下代码,尝试强制 PHP 立即发送数据。

    @flush();
    

    【讨论】:

    • 只使用flush();本身还不够。我不得不使用:ob_flush();其次是冲洗();为了在长 mysql 进程之前有输出。
    • 明白了。好吧,很高兴它把你带到了正确的方向。感谢您的接受。
    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多