PHP大文件使用文件系统中不存在的文件夹进行压缩

时间:2013-04-15 12:01:38

标签: php unix compression zip

我正在创建某种文件共享应用程序。在这个应用程序中,你应该能够up-&下载文件并构造这些文件。

我选择不继续操作文件系统。但是我根据时间戳将文件上传到文件夹中,并将重要信息存储在数据库中并在数据库中构建它们。所以没有REAL子文件夹,只是数据库中的关系将文件结构化为文件夹。

不,我想让用户通过压缩来下载文件夹(包括子文件夹)。但是我想在将要下载的zip-archive中重新创建这个文件夹结构(用户在前端看到)。我已经设法使用ZipArchive类PHP:http://php.net/manual/en/class.ziparchive.php 但这有一个大问题。它使用了大量的内存和压缩大文件时的cpu。并且系统必须能够处理大文件(> 1GB)我不可能允许PHP使用> 1GB的内存?!

现在我发现了一个Stackoverflow问题,可以在php中使用更少的内存来压缩大文件: https://stackoverflow.com/a/4357904/383731

这似乎使用了Unix Zip命令,但是有可能在这些拉链中创建文件夹而文件系统中没有它们吗?

1 个答案:

答案 0 :(得分:1)

  • 在临时目录中创建一个文件夹
  • 将子文件夹和links添加到实际文件
  • 拉链
  • 发送
  • 杀死临时文件

关于链接的部分很重要。如果您只是使用链接,则实际上不必复制文件内容。您所做的只是为zip工具提供一个提示,它可以找到您要包含在存档中的内容

修改

符号链接和硬链接都有效,上面的链接解释了如何使用符号链接。