发送一个AJAX请求来处理数据,并获取多个更新其进度的PHP响应

发送一个AJAX请求来处理数据,并获取多个更新其进度的PHP响应,php,iphone,android,ajax,server-push,Php,Iphone,Android,Ajax,Server Push,背景: 我正在尝试开发一个加载屏幕插件,它可以集成到我们的移动富媒体广告中。其中一些广告使用多个图像制作动画书样式的动画,因此类似这样的东西非常有用。它需要在iPhone4.0+和Android 2.2+上运行,理想情况下,还要在WindowsPhone7.1上运行 我过去编码加载屏幕的方式是创建一系列图像对象,并将其源设置为图像url。然后,对于该对象的每个onload、onerror或onabort事件,我会将加载过程增加1,并在加载屏幕覆盖上显示它 然而,根据一位团队成员的建议,我一直在研

背景:

我正在尝试开发一个加载屏幕插件,它可以集成到我们的移动富媒体广告中。其中一些广告使用多个图像制作动画书样式的动画,因此类似这样的东西非常有用。它需要在iPhone4.0+和Android 2.2+上运行,理想情况下,还要在WindowsPhone7.1上运行

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

然而,根据一位团队成员的建议,我一直在研究如何使用数据URI,使用PHP将图像数据直接编码到网页上。这种方法的唯一缺点是,如果有很多图像,它会导致网页打开缓慢

几天前,我发现他在其中使用数据uri在服务器端脚本中对一系列图像进行编码,将其封装在json响应中,然后将所有这些图像文件发送回他的web应用程序。不过,这是一个好主意,如果我在加载屏幕中使用这个概念,那么在一个ajax请求中,加载进度将从0%提高到100%。因此,如果加载过程需要几秒钟的时间,那么这可能不足以保持访问者的兴趣。我需要在中间显示一些进步。

要做的事:

因此,我需要做的是采用Mark的方法,找出如何使响应更加实时。我想这样做,以便我可以发送一个带有图像列表的AJAX请求到我的加载程序php脚本,并让我的php脚本在每次(或每隔一次,或每隔5次,等等)成功完成这些图像的读取和编码时,以多个更新响应ping回

我意识到我可能把事情复杂化了;php脚本处理这些图像的速度如此之快,以至于返回到客户端代码的喋喋不休将毫无意义,因为它很快就会完成。在这种情况下,在JSON响应返回之前,sudo使用setTimeout模拟与这些图像相关的加载过程可能更有意义。或者我可能在正确的轨道上,有一个特定的阈值,我应该开始考虑这种方法,因为加载时间太长了


有什么想法吗?有什么例子吗?

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

正如@Marc B所说,Comet或WebSocket解决方案(针对较旧的Web浏览器提供回退)是您最需要的解决方案

Comet可能有点棘手,最终HTTP流和HTTP长轮询解决方案是HTTP的解决方案。WebSocket是一种更好的方法,因为它们是标准化的,而且在我看来,它正在成为服务器和客户端双向实时通信的标准。PHP实时基础架构有几种解决方案:

  • 和一个使用它的
如果您更愿意使用托管服务,它可以消除安装和维护实时基础设施的痛苦,尤其是当发生事件(显示新图像或更新数据库等)时,您只想将更新从服务器推送到客户端(iOS、Android、WP7上的浏览器)那么托管解决方案肯定是一个不错的选择(注意:我为托管解决方案提供商工作)

我已在此处汇编了托管解决方案列表:


看:

是的,我早就想到了。但老实说,我真的很难理解Comet的实现。你有任何可以帮助你的教程和例子的链接吗?