首页  >  问答  >  正文

php 导入excel 前台显示进度条

php 导入excel 前台显示进度条,求指教(不是上传excel文件的进度,而是php 读取excel->处理数据->写到mysql 这个过程的进度条)

怪我咯怪我咯2725 天前1292

全部回复(3)我来回复

  • 天蓬老师

    天蓬老师2017-05-24 11:36:21

    这个要看你Excel的大小和服务器允许的一次请求的最长时间。我觉得可以分以下几种情况:

    1. Excel很小,一两秒就导入完成了 -- 这种情况下直接显示个假的进度条就差不多了。比如说:第一秒动画进度到50%,第二秒进度到75%,第三名动画进度到90%,然后等服务器返回OK后进度到100%.

    2. Excel比较大,但是能在服务器允许的一次请求的最长时间内完成 -- 这种情况下,也可以有好几种做法:

      1. 简单粗暴点,导入Excel的进度自己估算下存放到某个位置(比如数据库某个字段中),另起一个ajax请求或EventSource每隔一段时间(比如500ms)来轮询下进度,并显示动画。

      2. 利用HTTP的长连接,在导入Excel的请求中输出进度,记得要及时刷新到浏览器中。而浏览器中根据返回的数据显示进度动画。

    3. Excel非常大或者业务比较复杂,无法在服务器允许的一次请求的最长时间内完成 -- 这时候,如果服务端能跑CLI脚本,则建议跑CLI脚本来导入(进度显示可以参考2.1);否则的话就得对Excel进行分步骤/分时/分段,然后在浏览器中一步一步来执行导入任务,并根据划分的结果来显示进度。

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:36:21

    读取excel后能获得记录总条数么?
    能,那就那么整呗,已处理记录数/总数。
    不能,那就放弃100%完成进度条,弄个反复循环的进度条表示我还活着就行了。

    回复
    0
  • PHPz

    PHPz2017-05-24 11:36:21

    不知道你会不会用swoole,也就说你上传完excel,之后,获取完记录条数,然后直接用swoole来执行导入sql的动作。你当前的页面只要通过统计数据库的记录条数,就能得到进度百分比了。

    回复
    0
  • 取消回复