php 导入excel 前台显示进度条
怪我咯
怪我咯 2017-05-24 11:34:21
0
3
1217

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复 (3)
Peter_Zhu

这个要看你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进行分步骤/分时/分段,然后在浏览器中一步一步来执行导入任务,并根据划分的结果来显示进度。

    我想大声告诉你

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

      PHPzhong

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

        最新下载
        更多>
        网站特效
        网站源码
        网站素材
        前端模板
        关于我们 免责声明 Sitemap
        PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!