首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在foreach循环内运行函数时的进度条

在foreach循环内运行函数时的进度条
EN

Stack Overflow用户
提问于 2011-10-31 06:03:12
回答 2查看 2.1K关注 0票数 0

我有一个foreach循环,它调用一个函数来设置数组的值。有时它需要几个小时才能完成,这取决于它必须通过函数运行多少次才能完成。

我希望有一个进度条或至少1/1000完成类型的进度指示器。

这个是可能的吗?如果是这样,我如何将其实现到我的代码中?它是在函数中还是在foreach循环中?我研究并找到了一些使用for和$i++的例子,但我不太确定如何实现它,因为我已经在使用foreach循环了。

非常感谢。

代码语言:javascript
复制
 function scrape_amazon($links) {
 //my code runs here to set all values in $ret array.
 }


 foreach($links as $link) {
$ret = scrape_amazon($link);
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-31 11:52:34

PHP可能并不是完成这项任务的合适工具,但是您可以做的是:

  • 将缓慢的代码作为后台进程启动,并将进度输出到文件中。
  • 有一个PHP脚本,用于轮询该文件以获取进度信息(通过页面刷新或AJAX)

可以通过多种方式启动后台进程,包括:

  • 每隔60秒通过cron启动一次,并通过分支/exec机制从网页轮询
  • 启动时在某个可读区域中假脱机的新作业
  • 在系统启动时作为守护程序启动

这将需要一些努力来避免多次执行和/或重叠的问题。

票数 0
EN

Stack Overflow用户

发布于 2011-10-31 07:17:50

我用这个,很好,不是ajax,只做刷新,但不是那么难看。

我放了一张图片

代码语言:javascript
复制
<img src='progress.gif' height=18 width=0 name=probar>

然后在服务器上完成的每个事件上设置echo一行,然后设置flush

代码语言:javascript
复制
echo "<script language='JavaScript'>\ndocument.probar.width=".(($sys["probar_width"]/$task_all)*$task_i).";\n</script>\n";
flush();

如果您的服务器(例如apache)使用缓存(例如,gzip已启用)它不能很好地工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7948197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档