PHP zip 存档进度条
我已经用 google 搜索过这个问题,但没有找到任何解决方案 - 有没有办法创建一个进度栏,用于在 PHP 中向 zip 存档添加/提取文件? 我能否获得某种状态消息(可以通过 AJAX 请求获得并更新进度栏)?
谢谢。
I've googled for this but didn't find any solution - is there a way to create a progessbar for adding/extracting files to/from zip archive in PHP?
Can I get some kind of status message which I can than get with an AJAX request and update the progress bar?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我现在正在尝试做同样的事情;它基本上*完整(*参见下面的问题部分)。
我使用的基本概念是有 2 个文件/进程:
调度程序将:
或者
任务将:
客户端
您需要一些 JavaScript 来调用调度程序,获取返回的令牌,然后调用调度程序,传递 update_token,以获取更新,然后使用这些返回的值来更新 HTML。
** 潜在的陷阱**
会话可能是一个问题。如果您有相同的会话,您会注意到您的浏览器(或者这是 Apache?)等待会话中的第一个请求完成,然后再返回其他请求。这就是我存储在 APC 中的原因。
当前问题
ZipArchive 类的问题在于,它似乎在 ->close() 方法中完成所有繁重的工作,而 addFile 方法似乎只需要很少的时间甚至不需要时间即可完成。
作为解决方法,您可以关闭并以特定字节或文件间隔重新打开存档。这实际上会稍微减慢压缩的过程,但就我而言,这是可以接受的,因为视觉进度条比只是等待而不指示正在发生的事情要好。
I am trying to do the same thing at the moment; it is mostly* complete (*see issues section below).
The basic concept I use is to have 2 files/processes:
The Scheduler will:
OR
The Task will:
Client-side
You'll need some JavaScript to call the Scheduler, get the token in return, then call the Scheduler, passing update_token, to get updates, and then use these returned values to update the HTML.
** Potential pitfalls**
Sessions can be a problem. If you have the same session you will notice that your browser (or is this Apache?) waits for the first request in the session to complete before returning others. This is why I store in the APC.
Current Issues
The problem with the ZipArchive class is that it appears to all the grunt work in the ->close() method, whilst the addFile method appears to take little to no time to complete.
As a workaround you can close and then reopen the archive at specific byte or file intervals. This actually slows the process of zipping down a little, but in my case this is acceptable, as the visual progress bar is better than just waiting with no indication of what is happening.