suchen

Heim  >  Fragen und Antworten  >  Hauptteil

PHP importiert Excel und zeigt den Fortschrittsbalken an der Rezeption an

PHP importiert Excel und die Rezeption zeigt einen Fortschrittsbalken an. Bitte geben Sie mir einen Rat (nicht den Fortschritt beim Hochladen von Excel-Dateien, sondern den Fortschrittsbalken beim Lesen von PHP in Excel – >Datenverarbeitung – >Schreiben in MySQL)

怪我咯怪我咯2770 Tage vor1339

Antworte allen(3)Ich werde antworten

  • 天蓬老师

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

    Antwort
    0
  • 我想大声告诉你

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

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

    Antwort
    0
  • PHPz

    PHPz2017-05-24 11:36:21

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

    Antwort
    0
  • StornierenAntwort