gpt4 book ai didi

php - 冲洗甚至 ob 冲洗不起作用

转载 作者:行者123 更新时间:2023-11-29 22:30:27 26 4
gpt4 key购买 nike

我正在尝试使用 php 中的 for 循环将行插入 MySQL 数据库。我想要的是回显在完成时插入的特定行名称。我尝试了flush方法,但是没有用,连ob_flush也没有用。

然后我在这里搜索了解决方案并找到了一些解决方案,尝试了所有方法,但当整个脚本完成时我仍然立即得到所有输出......

我的代码看起来像这样(我添加了一些在网上找到的行可以解决问题,但仍然没有运气,在下面的代码中我删除了 mysql 的东西,因为工作正常,数据被写入分贝):

<?php
header( 'Content-type: text/html; charset=utf-8' );
ob_implicit_flush(true);
ob_end_flush();
$con=mysqli_connect("...");
?>

<html>
<body>

<?php
for($d=1;$d<=5;$d++){
echo "$d";
echo str_repeat(' ', 4096);
ob_flush();
flush();
$query = "...";
mysqli_query($con,$query);
}

</body>
</html>

在这种情况下,脚本当然会立即运行,但在实际场景中,每个循环实际上需要一些时间来完成其中的操作,因此在大约 10 秒后一切完成后我得到了最终的回显。我想在每次 for 循环迭代后回显它,即大约每 2s

最佳答案

下面的代码对我有用。然而,一开始它似乎不起作用,因为一长串空格将交错的响应推到了右侧,我看不到响应。

请参阅下面的此处:

<?php 

$db_host = '...';
$db_user = '...';
$db_pass = '...';
$db_name = '...';

$con = new mysqli(
$db_host,
$db_user,
$db_pass,
$db_name
);

if ($con->connect_error) {
echo "$con->connect_error";
exit;
}

for ($d = 1; $d <= 5; $d++){
echo $d;
echo str_repeat(' ', 4096);
echo PHP_EOL; // <<< THIS LINE HERE

ob_flush();
flush();

$query = "SELECT SLEEP(5)";

mysqli_query($con, $query);
}

这个(更简单的测试)也有效:

for ($i = 0; $i < 6; $i++) {
echo "$i is run." . PHP_EOL;

ob_flush();
flush();

sleep(10);
}

因此,创建一个独立页面,将上述内容粘贴到其中并填写数据库详细信息。然后运行它并查看是否得到输出。如果您这样做,那么您未包含的代码会出现一些(类似或其他)问题。如果没有,您的服务器配置可能会以某种方式阻止其工作。

首先,尝试获得一个更简单的版本,然后从那里开始。这也是一本不错的入门书:

http://www.sitepoint.com/php-streaming-output-buffering-explained/

关于php - 冲洗甚至 ob 冲洗不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com