PHP zip存档进度条

时间:2011-09-22 08:04:50

标签: php upload zip progress-bar

我已经搜索了这个,但没有找到任何解决方案 - 有没有办法创建一个progessbar来向/从ZIP档案中添加/解压缩文件? 我能获得某种状态消息,而不是使用AJAX请求并更新进度条吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我正在努力做同样的事情;它主要是*完整的(*见下面的问题部分)。

我使用的基本概念是拥有2个文件/进程:

  1. 计划程序(启动任务,可以调用以获取更新)
  2. 任务(实际上完成了压缩任务)
  3. 调度程序将:

    1. 创建唯一的更新令牌并保存到缓存(APC)
    2. 使用curl_multi_exec调用Task页面,该页面是异步的,传递update_token
    3. 以JSON格式返回令牌 OR
    4. 以update_token(在我的情况下,这是一个简单的状态数组)返回APC的内容为JSON
    5. 任务将:

      1. 使用更新令牌
      2. 更新状态的APC
      3. 做实际工作:)
      4. <强>客户端

        您需要一些JavaScript来调用Scheduler,获取令牌,然后调用Scheduler,传递update_token以获取更新,然后使用这些返回的值来更新HTML。

        **潜在的陷阱**

        会话可能是个问题。如果您有相同的会话,您会注意到您的浏览器(或者这个Apache?)在返回其他会话之前等待会话中的第一个请求完成。这就是我存储在APC中的原因。

        当前问题

        ZipArchive类的问题在于它出现在 - &gt; close()方法中的所有繁琐工作中,而addFile方法似乎几乎没有时间完成。

        作为一种解决方法,您可以关闭然后以特定的字节或文件间隔重新打开存档。这实际上减慢了压缩过程的速度,但在我的情况下这是可以接受的,因为视觉进度条比等待没有任何迹象表明发生了什么更好。