2010-01-02 58 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所做的。你爲什麼要不同?保存一行代碼?

我希望你認識到,在壓縮成功之前覆蓋文件的任何一點都是錯誤的。

相關問題