0

我目前正在学习 PHP,所以我正在做一些培训,我遇到了一个我不明白的问题。

我在 Repl.it 上写了几行代码:

$msg = "Once upon a time...";

for ($i=0; $i < strlen($msg); $i++) {
  echo '<span>'.$msg[$i].'</span>';
  usleep(100000);
}

在这里,代码按预期运行(至少按照我的意愿),即一个字符一个接一个地显示,每个字符之间有几毫秒的延迟。例如,在 RPG 对话框中。

现在我将我的代码导入到 Visual Studio 并在 localhost 上使用 Xampp 运行它,只有在整个循环完成工作后才会显示所有内容。因此,在这种情况下,使用 19 个字符长的“从前……”,它会加载 100.000 毫秒 * 19,然后我会立即显示整个消息。

对我有什么提示吗?:)

4

1 回答 1

0

PHP 在服务器上运行。默认情况下,服务器会等到页面完全生成后再将结果发送给客户端。

您可以结合使用ob_flush()(刷新 PHP 输出缓冲区)和flush()(刷新系统输出缓冲区)来实现您想要的:

$msg = "Once upon a time...";

for ($i=0; $i < strlen($msg); $i++) {
  echo '<span>'.$msg[$i].'</span>';
  usleep(100000);

  ob_flush();
  flush();
}

但是,我认为最好在服务器端尽可能快,让 javascript 在客户端处理花哨的渲染。

于 2022-02-27T08:17:39.773 回答