我如何运行php脚本与定时器



我有foreach函数打印学生姓名

$names = array("Alex","Brad","Tom");
foreach($names as $name) {
   echo "$name <br />";
   sleep(3);
}

我如何打印每个名字,每3秒?在"echo $name"之后,我需要一些计时器来停止循环并等待3秒。sleep()函数在这里不起作用。我还能做什么?

您无法(可靠地)在服务器端执行此操作。这是因为有太多的可能性,你的流量被持有或缓冲的方式:由web服务器,代理沿途,你的浏览器等。然而,它可能在CLI上工作。

所以我肯定会在不牺牲安全性(如果需要)的情况下在客户端进行。

如果这只是为了"修饰"目的,您可以创建一个AJAX方法,它将返回名称数组,然后让Javascript用它的计时器输出它们。

或者,您可以让AJAX使用计时器调用PHP脚本,PHP将只返回一个名称。它可以将当前时间戳保存在DB或Session变量中,直到一段时间过去后才返回新名称。

尝试使用flush函数

ob_start();    
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
   echo "$name <br />";
   ob_flush();
   flush();    
   sleep(10);
}

如果您需要在网页中执行此操作,则需要刷新输出或禁用输出缓冲以获得该工作。参考:

  • http://php.net/manual/en/book.outcontrol.php
  • http://php.net/manual/en/function.flush.php

可以使用javascript, ajax

或使用flush()函数

<?php
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
   echo "$name <br />";
   flush();
   sleep(3);
}
演示工作

可以在echo后面写flush();

最新更新