PHP: распаковка сжатого файла с помощью gzuncompress и fopen

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

//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 ответ

Решение

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

У тебя есть gzcompress($contents, '0');

Ты хочешь gzcompress($contents, 9);

С php.net/gzcompress:

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

Другие вопросы по тегам