我怎么能用计时器运行PHP脚本?

时间:2011-07-27 13:12:45

标签: php timer foreach countdown

我有foreach打印学生姓名的功能

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

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

5 个答案:

答案 0 :(得分:4)

你不能做这个服务器端(可靠)。这是因为在途中保持或缓冲流量的可能性太大了:通过网络服务器,沿途代理,浏览器等等。然而,它可能适用于CLI。

所以我肯定会在客户端做这件事,而不会牺牲安全性(如果需要的话)。

如果这仅用于“装饰”目的,您可以创建一个AJAX方法,该方法将返回名称数组,然后让Javascript输出它们的计时器。

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

答案 1 :(得分:3)

尝试使用flush函数

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

答案 2 :(得分:1)

您可以使用javascript,ajax

执行此操作

或使用flush()函数

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

working demo

答案 3 :(得分:1)

如果您需要在网页中执行此操作,则需要刷新输出或禁用输出缓冲以使其正常工作。一些参考文献:

在php CLI中,代码可以正常工作。

答案 4 :(得分:0)

您可以在flush();

之后撰写echo