在PHP中压缩文本文件列表的最佳方法


Best way to compress text file list in PHP

我有一个处理大量文件的PHP脚本。数组被序列化并以文本格式存储,如:

E:'folder1'folder2'file2.txt|E:'folder1'folder2'file3.txt|E:'folder1'folder3'file1.txt|E:'folder1'folder4'file1.txt|E:'folder1'folder2'file5.txt etc... 

在从文件中读取数组返回时使用"|"作为分割字符,如:$array = explode("|",$filesText);

考虑到大量文件具有相同或相似的路径,我想压缩字符串以减少存储在磁盘上的文件大小。如何压缩/解压缩字符串,最有效的方法是什么?(存储时文件大小最小,压缩/解压缩时间最快)

gzcompress和gzuncompress是你想要使用的。

保存字符串时使用gzcompress,加载字符串时使用gzuncompress。gzcompress函数甚至包括一个压缩级别选项,因此您可以选择一个良好的速度/大小权衡。

您可以使用类ZipArchive()来压缩字符串。这应该是相当有效的,因为用于ZIP文件的压缩算法中的一个步骤是消除未压缩数据的重复部分。

如果你有一些时间,你也可以尝试使用一个树的数据结构和排序的文件夹文件(这应该给你的想法:http://en.wikipedia.org/wiki/Tree_%28data_structure%29)。序列化树在大多数情况下会比你的列表小得多。