有一种方式来显示的进展吧php?我喜欢让用户知道什么php script是这样做的。

这一结果的例子,从我的网站 http://www.bestsellprice.com/search.php?itemnum=0&keyword=harry+potter+book

我有一个静态加载图像用一些文字,说"Loading..."的时候,该网页是全面装载的,我躲在装载div。我php script出去的亚马逊api,ebay api和屏幕上的擦伤的一对夫妇的其他网站并不是一个静态加载div我想要更新,载div与下

加载amazon.com

//进展亚马逊,当完成之后更新载div

加载ebay.com

等等。等等。

这是可以做到的?如果那么什么是最好的办法?谢谢你提前时间,用于帮助!

有帮助吗?

解决方案

使用AJAX询问PHP目前正在做什么,并建立一个队列系统来定义完成或未完成的任务。这是一个非常基本的例子:

任务开始时,设置以下变量:

使用AJAX询问PHP目前正在做什么,并建立一个队列系统来定义完成或未完成的任务。这是一个非常基本的例子:

任务开始时,设置以下变量:

<*>

一旦PHP加载eBay,它会将isEbayLoaded设置为true,然后AJAX可以简单地询问PHP是否已经加载了ebay,然后是亚马逊,然后是你需要的任何其他东西。所有PHP必须做的是检查这些变量是否设置为true,这意味着任务已经完成。

SESSION['isEbayLoaded'] = false;

使用AJAX询问PHP目前正在做什么,并建立一个队列系统来定义完成或未完成的任务。这是一个非常基本的例子:

任务开始时,设置以下变量:

<*>

一旦PHP加载eBay,它会将isEbayLoaded设置为true,然后AJAX可以简单地询问PHP是否已经加载了ebay,然后是亚马逊,然后是你需要的任何其他东西。所有PHP必须做的是检查这些变量是否设置为true,这意味着任务已经完成。

SESSION['isAmazonLoaded'] = false;

一旦PHP加载eBay,它会将isEbayLoaded设置为true,然后AJAX可以简单地询问PHP是否已经加载了ebay,然后是亚马逊,然后是你需要的任何其他东西。所有PHP必须做的是检查这些变量是否设置为true,这意味着任务已经完成。

其他提示

我之前用一个非常简单的解决方案完成了这个:

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!)。

最好的方法是让你的javascript对服务器进行ajax调用并找出它所在的位置,这样你就可以向用户提供一些反馈。

您可以从上传进度条开始,然后继续显示应用程序的进度。

我会请一个要求为每个网站,并使用的输出,从该网页(XML式,无论)以让其他的网页知道这是怎么回事。

例如...伪码:

  • 收集站
  • 为循环,ajax页
  • 阿贾克斯页返回每个请求用一个状态消息,例如-"载入亚马逊。..."

这就是它!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top