PHP大型文件压缩文件夹不';不存在于文件系统中

PHP大型文件压缩文件夹不';不存在于文件系统中,php,unix,compression,zip,Php,Unix,Compression,Zip,我正在创建某种文件共享应用程序。在这个应用程序中,您应该能够升级和下载文件并构建这些文件 我选择不继续操纵文件系统。但是我根据时间戳将文件上传到文件夹中,并将重要信息存储在数据库中,并在数据库中构建它们。因此,数据库中没有真正的子文件夹,只有将这些文件组织到文件夹中的关系 不,我想让用户通过压缩下载文件夹(包括子文件夹)。但是我想在将要下载的zip存档中重新创建这个文件夹结构(用户在前端看到)。我使用PHP的ZipArchive类成功地做到了这一点: 但这有一个大问题。压缩大文件时,它会占用大量

我正在创建某种文件共享应用程序。在这个应用程序中,您应该能够升级和下载文件并构建这些文件

我选择不继续操纵文件系统。但是我根据时间戳将文件上传到文件夹中,并将重要信息存储在数据库中,并在数据库中构建它们。因此,数据库中没有真正的子文件夹,只有将这些文件组织到文件夹中的关系

不,我想让用户通过压缩下载文件夹(包括子文件夹)。但是我想在将要下载的zip存档中重新创建这个文件夹结构(用户在前端看到)。我使用PHP的ZipArchive类成功地做到了这一点: 但这有一个大问题。压缩大文件时,它会占用大量内存和cpu。而且系统必须能够处理大文件(>1GB),我不可能允许PHP使用大于1GB的内存

现在,我发现了一个Stackoverflow问题,即如何在php中使用更少的内存压缩大型文件:

这似乎使用了Unix Zip命令,但是否可以在文件系统中不存在文件夹的情况下在这些Zip中创建文件夹?
  • 在临时目录中创建一个文件夹
  • 将子文件夹和添加到真实文件
  • 闭嘴
  • 发送它
  • 杀死临时文件
关于链接的部分很重要。如果只使用链接,实际上不必复制文件内容。您所要做的就是给zip工具一个提示,它可以在哪里找到您想要包含在归档中的内容

编辑:


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

hmm。。。创建一个临时目录,创建一个存档文件并删除如下目录:
mkdir a;mkdir b;zip-r arch.zip。;rm-rfab@mkjasinski我不想使用真正的文件系统。我已经用Oliver A.的解决方案解决了这个问题,创建符号链接…简洁的解决方案(虽然硬链接和同一文件系统上的符号链接一样有效-符号链接是最好的选择,但不是因为你建议的原因)@symcbean true。导入部分是“链接不复制”。这似乎是一个简洁的解决方案,我将尝试一下这一个&让你知道!谢谢你,伙计,这件事成功了!是否需要清理符号链接?或者,当我删除文件夹时,它们是否会自动删除?