我有一个周期。它需要相当长的时间,我需要可视化过程工作。怎么做?
while ($csvIterator->next()) {
//a lot of code...
visualizeProcess();
}
答案 0 :(得分:1)
您的问题确实需要更多细节。如果您需要详细的百分比条形指示,如
然后你需要将你的循环数据分成几部分(使用迭代计数/总迭代次数或读取的字节数等)。
THIS GUIDE将为您提供必要的知识。
另一方面,如果你需要一个像着名的这样的加载指示器,那么你所做的就是gatta(我们假设你有jquery而你的脚本只有进程)是
$("#myButton").click(function(){
$("#myLoaderGif").show();
$.get("myPHPScript.php", function(data){
alert("Data Loaded: " + data);
$("#myLoaderGif").hide();
})});
此示例假设您的加载图片有<img id="myLoaderGif">
标记,而id = myButton
的某个元素启动了脚本,而您使用get来检索数据
答案 1 :(得分:0)
在循环中间使用echo
或var_dump
。同样implicit_flush可能会影响详细程度。
答案 2 :(得分:0)
修改强>
- 这假设您使用PHP进行基于Web的应用程序。
简而言之,没有简单的方法可以做到这一点。在很多方面你需要巧妙地设计你的应用程序来处理它(即:如果你逐个构建一个页面,那么如果它应该被保护会发生什么?你需要实现SSL和确保所有AJAX调用都已加密)。基本上你需要做的是让脚本可执行的脚本,而不是一个完全独立完成操作的循环。例如,有一个php文件,它接受一个整数作为查询字符串,然后使用该整数执行不同的操作。一旦整数等于某个数字,您就可以确定您需要做的所有事情都已完成,因此进度使其达到100%。你不能让PHP一页一页地发送回浏览器,这就是你想要做的事情。您需要使用AJAX调用(假设这是一个Web应用程序而不是命令行应用程序)。做类似以下的事情:
创建一个PHP文件,通过查询字符串接收int。传递的整数指示PHP脚本执行的操作(即:0 =获取分配的所有会话变量,1 =连接到数据库并获取需要解析的数据并将其推送到会话中,2 =解析来自会话的数据并做一些事情。)
创建一个PHP文件,该文件将作为显示进度的基页提供给客户端。在此页面中,您将需要使用Javascript通过各种查询字符串请求1中提到的页面。您发出的AJAX调用具有成功和失败处理程序,在这些调用中,您将能够更改页面上显示的内容以反映该过程的进展情况。
简而言之,由于其分发的性质,没有简单的方法来为Web应用程序执行进度条。我建议您查看GET和POST请求的工作方式,Web服务器的功能以及PHP处理程序与Apache协同工作的方式,以便更好地了解您的初始方法不可行的原因。
答案 3 :(得分:0)
最好的使用方法是JavaScript,但您可以使用
flush()
功能