将内存中的 PHP 数组压缩为 .tar.gz 文件(PHAR?)
我的内存中有一个很大的 xml 文件数组作为字符串。
我正在寻找从 PHP (5.3) 创建可读/可提取 .tar.gz 文件的最有效方法。
目前我正在使用 此类。
但是:
- 它看起来没有维护
- 它需要文件(所以我从我的内存阵列创建了数千个文件,这些文件在几毫秒后就没用了)
所以我正在寻找一种有效的方法来处理 .tar.gz 文件,大多数重要的一点是能够使用简单的命令轻松地将文件放入其中,例如:
$myArchive->putFileFromString($fileName, $dataString);
看起来可以使用 TAR & 配置 PHAR GZ,这可能是一个解决方案吗?
$p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
额外的问题,我不确定是否最好实时构建它(在每次 xml 字符串生成之后)以节省内存,或者只是等待这个巨大的对象&压缩一次。在这种情况下,我不清楚 proc_usage / mem_usage 的比率。
目标最大使用量是 100K XML 文件。
谢谢!
I have a large in-memory array of xml-files as string.
I'm looking for the most efficient way to create a readable/extractable .tar.gz file from PHP (5.3).
Currently i'm using this class.
But :
- It does not look maintained
- It requires files (so i'm creating thousands of files from my memory array which are useless a few ms later)
So i'm looking for a efficient way to handle a .tar.gz file, most important point is to be able to easily put files in it with a simple command like :
$myArchive->putFileFromString($fileName, $dataString);
Looks like it is possible to configure PHAR with TAR & GZ, so it may be a solution?
$p = $p->convertToExecutable(Phar::TAR, Phar::GZ);
Bonus question, i am not sure if it would be better to build it live (after each xml string generation) to save memory, or just wait this huge object & compress it once. The ratio proc_usage / mem_usage is unclear to me in this case.
Target max usage is 100K XML files.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有点晚了,但供将来参考:
您可以使用 PharData 类。它有点像 ZipArchive,只不过您可以使用 Array 接口添加内容:
It's a bit late, but for future reference :
You can create a tar.gz archive using the PharData class from the the phar extension. It's a bit like the ZipArchive, except that you can add content using the Array interface :
如果要创建 tgz 文件,请使用 PEAR 的 Archive_Tar 包。它允许您从内存中动态创建 tar + gz 文件:
If you want to create tgz files, use PEAR's Archive_Tar package. It allows you to create tar + gz files on the fly from memory: