PHP+JavaScript 任务进度条实现思路、求指教

需求是将PHP的执行进度发送给前端,界面是静态的html和JavaScript,求大神指教下如何完成这个需求。。。。求思路,若能给个demo 就跪谢啦。

业务:

在数据库中读取N条记录,然后每操作完一条,就要发送进度给前端,进度条怎么算我知道,但不解的是我如何循环发送进度给前端

阅读 4.5k
4 个回答

你的任务进度是指什么?是文件上传这种还是其他?

已执行的条数占总条数的百分比,ajax轮训发送或websocket发送给前端

通过您的问题分析,大致有两种办法:

1、长连接

可以用socket长连接,实时性和连接的状态都能得到很好的保证。长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。我们公司的客服系统就是用的该方法。您可以参考mqtt协议来实现长连接的需求。

优点:在无消息的情况下不会频繁的请求,耗费资源小。
缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。
实例:WebQQ、Hi网页版、Facebook IM。

2、ajax轮询

客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 很适合web网站,我们公司项目中语音翻译就是用的该方法。

优点:后端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。
实例:适于小型应用。

您的问题是由服务端主动通知给客户端,那只能用长连接了,ajax轮询是由于前端主动触发的,数据库读取状态前端是无法知道的,所以ajax轮询无法使用。(推送也是这个理)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题