我正在寻找一种方法,在任务前面的webapp中显示一条等待消息,然后隐藏消息。任务运行时间较长。我根本不知道是否有可能。
到目前为止,我可以看到问题是,在任务完成后,该站点将返回给用户浏览器,因为任务是站点的一部分,因为内联代码由Web服务器解释器替换(无论PHP是否,Perl或其他)。
我能想象的唯一解决方案是将任务与线程或进程并行,并使用网站中的ajax重新查询状态。
任何想法都不那么复杂吗?谢谢你的帮助!
答案 0 :(得分:0)
一旦代码开始执行,服务器应该开始向浏览器发送内容;它不会等待服务器端代码先完成。
因此,您可以在呈现包含等待消息的HTML后运行任务。完成任务后,您可以呈现隐藏等待消息的<script>
块。
答案 1 :(得分:0)
您可以采取以下几种方式:
1)将任务拉出到自己的文件中,使其不是内联的。然后使用异步AJAX来查询任务。在触发事件时显示进度条,并在完成后隐藏它。
2)确保将数据流回浏览器(这是php中的默认值)。 如果您将php作为CGI运行,它将执行整个脚本,然后将任何内容返回给浏览器。在这种情况下,您将不得不o#1 将内联任务作为页面上的最后一项。在内联任务现在的位置,设置<div id=loading>Content Loading Please Wait</div>
或微调器/进度条。
将内联任务的输出捕获到php变量在任务结束时添加<script>document.getElementById('loading').innerHTML ="$taskResult";</script>
答案 2 :(得分:0)
见Watching long processes through CGI。您可以使用相同的技术来使用AJAX调用来显示更新。