我需要允许用户通过网络表单上传一个zip文件。服务器使用Apache Web服务器运行Linux。使用像Archive::Zip这样的模块来提取这个压缩文件有什么好处,或者我应该用反引号对unzip
执行系统调用吗?如何在Perl中提取压缩归档文件?
回答
如果执行二进制unzip
,你的进程会fork/exec和
- 实例化一个新的进程
- 占用更多的内存(用于衍生进程的持续时间)
你还必须配置正确的路径到unzip
。鉴于这一切,我强烈希望图书馆的方法。
按照Archive::Zip documentation你会更好使用Archive::Extract:
如果你只是要建议您看看使用存档提取拉链(和/或其他档案)::提取物相反,因为它更容易使用,并归因于存档特定的功能。
这很有趣,因为Archive::Extract will try Archive::Zip first and then fall back to the unzip
binary if it fails.所以看起来Archive :: Zip似乎是首选。
Archive :: Zip使用Compress::Raw::Zlib这是zlib系统库的低级接口;所以它不是纯粹的Perl实现,这意味着它的性能与unzip
相似。换句话说,从性能角度来看,没有理由在Archive :: Zip之前选择unzip
。
如果使用'Archive :: Extract',那么它也适用于其他压缩格式。 – 2009-11-03 17:24:54
一个问题是内存。我们发现Archive::Tar
存在内存泄漏的难题(生产Web服务器崩溃)。因此,尽管整体使用模块而不是系统调用外部命令是一个好主意(请参阅其他推理的回复),但您需要确保模块没有陷阱。
- 1. 在perl中压缩文件
- 2. 如何提取读取压缩文件?
- 3. PowerShell压缩 - 归档文件扩展
- 4. 如何将文件压缩到归档的指向文件夹?
- 5. 如何在不提取和重新压缩的情况下重命名zip归档文件中的文件?
- 6. 提取压缩文件
- 7. 压缩并归档指定文件夹中的所有文件
- 8. 如何解压/ iOS中提取的7z压缩文件
- 9. 澄清的压缩/归档文件是如何工作的
- 10. Glassfish server.log压缩和归档
- 11. 运行在压缩文档中的文本文件`head`无解包归档
- 12. 在Perl中解压缩.Z文件
- 13. 如何从内存中的生成文件创建Java压缩归档文件?
- 14. Perl:解析压缩文件
- 15. 从android中提取压缩文件夹
- 16. 如何在C#中使用SharpZipLib提取多卷压缩文件?
- 17. 如何在IPYTHON中提取压缩的zip文件?
- 18. java-library将文件从压缩文件中提取/压缩到压缩文件中
- 19. 从Android中的归档解压缩后找不到文件
- 20. 从流式存档即时解压缩和提取文件
- 21. 如何在文档目录中存储压缩文件?
- 22. 如何在Emacs中递归压缩ZIP文件
- 23. linux:如何压缩每个文件在一个归档tar/cpio/...其他
- 24. 如何压缩和提取Visual Basic 2010中的JAR文件?
- 25. 如何从压缩文件中提取行间隔/范围?
- 26. 我应该如何提取java中的压缩文件夹?
- 27. Android视图压缩文件不提取
- 28. 使用boost :: iostreams提取压缩文件
- 29. 提取100%压缩率的Zip文件
- 30. 如何压缩文件时不压缩
我从来不理解这种想法。 fork/exec是一个非常快速的过程,任何花时间阅读或编写shell脚本的人都会意识到这一点。解压缩二进制本身消耗的内存相对于算法和(特别是)其中的数据成本而言是微不足道的。并且/ usr/bin/unzip默认在每个Linux发行版上发布,我也相信BSD和Cygwin。 除非你有如下简单的示例代码:'open my $ input“,unzip -cp $ ARCHIVE $ FILE |”',我宁愿选择简单的选项。 – 2009-11-03 17:47:19
虽然我同意上面的*一般*,如果您的服务器负载很重,那么您的资源消耗将会随着fork/exec模型的增加而增加。 pid分配,进程间流分配,内存分配(允许写入时复制)。对于独立进程,我很满意fork/exec模型。对于服务器模型,我更愿意以最少的资源分配来回避这种模式。 – 2009-11-03 18:05:51
如果你在一个循环中分支,特别是一个热循环,你绝对会看到性能问题。如果你不在循环中,或者如果你以每秒一次或每几秒一次的速度分叉,那么没问题。另外,使用库而不是系统的'unzip'命令可能是一个好处;图书馆可能会更新,更少车。 – 2013-04-11 04:47:23