PHP: распаковка сжатого файла с помощью gzuncompress и fopen - PullRequest
0 голосов
/ 29 июля 2011

Я пытаюсь распаковать двоичный файл, а затем распаковать его, чтобы проверить, работает ли сжатие. Однако «несжатый» файл содержит те же данные, что и «сжатый» файл. Как будто распаковка никогда не случалась. Я перечислил код ниже. заранее спасибо:

//compressing  
//read file  
$filename = 'tocompress/tocompress'.$number_input.'.bin';  
$contents=fread($fp,filesize($filename));  
fclose($fp);  
//compress file  
$compressing = gzcompress($contents , '0');  
//write to file  
$fp = fopen('compressed/compressed'.$number_input.'.bin', 'wb');  
 fwrite($fp, $compressing);  
 fclose($fp);  

//uncompressing  
//read file  
$uncompfilename='compressed/compressed'.$number_input.'.bin';  
$fp=fopen($uncompfilename,'rb');  
$uncompresscontents=fread($fp,filesize($uncompfilename));  
fclose($fp);  
//uncompress file  
$uncompressing = gzuncompress($uncompresscontents);  
//write to file  
$fp = fopen('uncompressed/uncompressed'.$number_input.'.bin', 'wb');  
 fwrite($fp, $uncompresscontents);  
fclose($fp);

1 Ответ

4 голосов
/ 29 июля 2011

gzcompress принимает необязательный второй аргумент, который устанавливает уровень сжатия, от 0 до 9.Вы устанавливаете его в 0 (без сжатия), и вы должны использовать int, а не строку:

У вас есть gzcompress($contents, '0');

Вы хотите gzcompress($contents, 9);

От php.net / gzcompress :

Уровень сжатия.Может быть задано как 0 для отсутствия сжатия, до 9 для максимального сжатия.

...