如何使用 sleep() 在 while 循环中回显某些内容?
Posted
技术标签:
【中文标题】如何使用 sleep() 在 while 循环中回显某些内容?【英文标题】:How to echo something in a while loop with sleep()? 【发布时间】:2019-11-13 04:13:30 【问题描述】:我有一个 while 循环来读取包含客户数据(姓名、电子邮件、网站)的 csv 文件。我用每秒回显每一行。所以我用 sleep(1) 和很多希望做了一个 while 循环,但是浏览器一直在等待,直到它完全加载。我知道,这就是 php 的工作原理,也许使用 javacript 很容易,但我真的没有关于 javascript 的胶水。甚至 flush() 技术也不起作用。也许我的主机有问题?我使用 one.com
我已经尝试了循环中的 sleep()。 - 加载直到完成 我已经尝试过刷新功能 - 相同
$handle = fopen ("csv.csv","r");
$csv = array();
while ( ($data = fgetcsv ($handle, 1000, "\t")) !== FALSE )
$csv[] = $data;
echo "Name=".$data[0]."<br>Email=".$data[1]."<br>Website=".$data[2];
sleep(1);
fclose ($handle);
【问题讨论】:
如果我是你,我会花时间和精力学习 Javascript(和 Ajax)。不建议在网页上使用sleep()
,因为这些调用会被阻塞,因此无法很好地扩展。最好一次性从后端获取所有数据并使用 Javascript 以您想要的方式呈现它。
它仅供我和我的同事使用。我们需要它的真正原因有点复杂,但这样它的功能。具有数百行的csv,每行有3个列,我需要等待1秒才能在网络浏览器中输出。如果您对此有 javascript 解决方案,请提供给我。
对不起。我没有完成的脚本,所以也不是正确的要求它的地方。我们很高兴帮助您解决现有代码的问题,但我们不是来为您解决的。
我知道。我只需要一个提示如何去做。否则,我们可以用“学习如何做”来回答 *** 中的每个问题:/ 我知道它可以在 while 循环内刷新任何内容。它只是在我的网络服务器上不起作用。也许我可以将 csv 的所有内容放在一个数组中,并让 javascript 在 1 秒延迟后显示它。这样我可能需要 javascript 部分(带有回声和延迟的循环)或更好的解决方案来在 while 循环中获得回声
谷歌搜索“Ajax 入门”之类的内容,然后一步一步地开始。 JS 还具有“延迟”操作的功能,使用 setTimeout()
一次性,或 setInterval()
每隔 n 毫秒执行一些代码。
【参考方案1】:
您可以同时使用 php 和 javascript 来执行此操作。
第 1 步:Javascript 将对 php 进行一次 ajax 调用,以将 csv 数据转换为 json 格式。
第 2 步:PHP 将读取 csv 文件,将数据存储到数组中,并将 json 编码的数据返回给 javascript。
第 3 步:使用 setInterval 函数在 javascript 中循环访问后端数据,如下所示:
var data = /* json data from ajax call */;
var i=0, html='';
var loop = setInterval(function()
// Perform the operation here, which will print some data at interval of 1 second
if(i==data.length)
clearInterval(loop);
, 1000);
【讨论】:
我过去常常搜索很长时间才能最终完成,以便将我的数组放入 javascript。所以解决方案是最终的var data = [<?php echo '"'.implode('","', $data).'"' ?>];
,它工作正常=)以上是关于如何使用 sleep() 在 while 循环中回显某些内容?的主要内容,如果未能解决你的问题,请参考以下文章
添加一个没有 Thread.sleep 的延迟和一个啥都不做的 while 循环
当我进行异步调用时,是不是有必要在 iOS 和 Android 的 while 循环中使用 Thread.Sleep(1)?