2010-01-02 74 views
1

我正在使用PHP的gzip压缩一些日志文件。我的开发机器是windows,而且大家都知道,windows的路径有时被一个空间隔开,这使得它很难,因为我必须用引号将所有内容都包装到日志中。是否有一个压缩实用程序只会压缩相同的文件而不创建新文件?

我想保持我的代码尽可能干净,并且想知道是否有一个压缩实用程序将采用相同的文件进行压缩并压缩该文件,而不是创建新的压缩文件。这样,我不必运行单独的命令以后删除未压缩的文件。


只是澄清,我没有使用shell_exec来压缩这些,而是​​PHP的内部函数。 “gzwrite”等。

+0

这似乎不可能。您从HD读取文件,将其压缩并再次写入HD作为新文件。 – JCasso 2010-01-02 07:51:47

+0

这是我到目前为止发现的。我真的恨使用shell_exec,但它看起来像我可能不得不。 – 2010-01-02 07:58:54

+1

出于好奇,创建新文件和删除旧的未压缩文件有什么不好? – 2010-01-04 20:00:10

回答

0

如果是windows,为什么不创建一个小工具来为你做?它可能只是两行......执行gzip然后将文件重命名为原始文件。

顺便说一句 - 默认不gzip创建original_file.gz后删除原来的?

1

如果日志文件不大于分配的php内存,您可以在整个日志文件中读取,然后使用gzcompress/gzencode压缩内存中的文件,然后将数据写回到文件中。您可能需要重命名文件以将.gz附加到最后。希望这有助于。

0

该文件的时间 99,99999%拉链意味着只是这样的:从that file

  1. 读取数据,压缩并写入that file.zip
  2. 删除that file

这就是winzip所做的。这就是gzip所做的。你为什么要不同?保存一行代码?

我希望你认识到,在压缩成功之前覆盖文件的任何一点都是错误的。

相关问题