有没有办法在php中显示进度条?我想让用户知道php脚本在做什么。
以下是我的网站http://www.bestsellprice.com/search.php?itemnum=0&keyword=harry+potter+book
的结果示例我有一个静态加载图像,其中一些文本显示“正在加载...”,当页面完全加载时,我隐藏了加载div。我的PHP脚本发送到亚马逊api,ebay api和屏幕刮了几个其他网站,而不是静态加载div我想更新加载div与以下
加载amazon.com
//进展亚马逊,完成更新加载div
正在加载ebay.com
等。等
这可能吗?如果是最好的方法是什么?提前感谢您的帮助!
答案 0 :(得分:3)
使用AJAX询问PHP目前正在做什么,并建立一个队列系统来定义完成或未完成的任务。这是一个非常基本的例子:
任务开始时,设置以下变量:
$_SESSION['isEbayLoaded'] = false;
$_SESSION['isAmazonLoaded'] = false;
一旦PHP加载eBay,它会将isEbayLoaded设置为true,然后AJAX可以简单地询问PHP是否已经加载了ebay,然后是亚马逊,然后是你需要的任何其他东西。所有PHP必须做的是检查这些变量是否设置为true,这意味着任务已经完成。
答案 1 :(得分:1)
我之前用一个非常简单的解决方案完成了这个:
ob_flush();
所需要的只是创建一个具有适当类名的div:
<div class="loading">
Loading...
</div>
然后,我的PHP基本上是:
foreach ($sites as $site) {
printAndFlush(<<<CSS
<style>
div.loading {
background: url($site.png) no-repeat right center;
}
</style>
CSS;
scrapeSite($site);
}
这会使用背景样式来显示您要抓取的网站。
如果你必须使用标记,你可以每次打印一个新的“加载”div(使用唯一的ID),以及将前一个div的样式设置为“display:none”的样式。
当然,请记住,在渲染任何内容之前,某些浏览器需要至少1024个字节(少于4k!)。
答案 2 :(得分:0)
最好的方法是让你的javascript对服务器进行ajax调用并找出它的位置,这样你就可以向用户提供一些反馈。
您可以从上传进度条开始,然后继续显示应用程序的进度。
答案 3 :(得分:0)
我会为每个站点发出请求,并使用该页面的输出(XML,JSON等)让其他页面知道发生了什么。
例如......伪代码:
就是这样!