2011-08-24 43 views
0

背景:发送一个Ajax请求来处理数据,并取回多个PHP响应更新其进度

我试图开发一种可集成到我们的移动富媒体广告的加载屏幕插件。这些广告中的一些广告使用了几张图片来制作翻页式动画,所以像这样的东西会非常有用。它需要在iPhone 4.0+和Android 2.2+上运行,最好是Windows Phone 7.1。

我已经在过去编码加载屏幕的方式,我会创造一系列的图像的对象,并设置其源图像的URL。然后,对于该对象的每个onload,onerror或onabort事件,我会将加载过程加1并将其显示在加载屏幕覆盖层上。

然而,在团队成员的建议,我一直在做一些研究,使用数据URI的图像数据直接编码到网页,使用PHP。这种方法唯一的缺点是,如果有大量图像,它可能会导致网页缓慢打开。

前几天我发现了a blog post by Mark Kolich,其中他使用数据uri在服务器端脚本中对一系列图像进行编码,将其包装在json响应中,然后将所有这些图像文件发送回其Web应用程序。不过,如果我在我的加载屏幕中使用这个概念,那么在一个Ajax请求中加载进度将从0%变为100%。因此,如果加载过程需要几秒钟,那么可能不足以响应激励以保持访问者的兴趣。我需要在中间显示一些进展。

要做到:

因此,我需要做的是采取马克的方法,并找出我怎么能做出反应多一点的实时性。我想打它,所以我可以成功发送带有图片的列表一个AJAX请求到我的装载机PHP脚本,并有我的PHP脚本回ping与更新多个响应每一次(或隔日一次,或者每5等),它完成读取和编码这些图像。

我意识到,我可能是在它复杂化;该PHP脚本将如此之快处理这些图像的喋喋不休要回客户端代码将是毫无意义的,因为它会在任何时间来完成。在这种情况下,使用setTimeouts sudo模拟与这些图像相关的加载过程可能更有意义,直到JSON响应返回。或者我可能走在正确的轨道上,并且有一定的门槛,我应该开始考虑这种方法,因为加载时间过长。

任何想法?任何例子?

回答

0

由于@Marc乙说,彗星或WebSockets的解决方案(与回退的老的浏览器)是最肯定的您正在寻找的解决方案。

彗星可能是有点棘手左右让你的头,并最终HTTP流和HTTP长轮询的解决方案是为HTTP变通。 WebSockets的是一个更好的办法,因为它们是标准化的,在我看来,正成为标准服务器和客户端的双向实时通信。有用于实时的基础设施的几个解决方案,为PHP:

如果你宁愿使用托管服务,消除了疼痛安装和维护您的实时基础架构,特别是如果您只是想在您的服务器将更新推送到客户端(iOS,Android,WP7上的浏览器)时发生事件(当新图像应该是b e显示或数据库更新等),那么托管解决方案绝对是一个不错的选择(注:我为托管解决方案提供商工作)。

我编译托管解决方案在这里的列表:

参见:Hosted realtime technologies

0

尝试Comet。它允许多部分响应,它可以让你获得定期更新,但仍然只有一个HTTP请求。

+0

是啊,我想到了前面。但说实话,我真的很难在Comet实现方面打​​动我。你有链接到教程和例子可以帮助吗? –