Могу ли я изменить уровень сжатия ZipArchive?

Можно ли изменить уровень сжатия и/или метод, используемый классом ZipArchive?

Ответ 2

Как указано в предыдущем сообщении, вы не можете сделать это с помощью Zip. Если определение уровня сжатия более важно, чем метод архивирования, то PHP zlib позволяет:

string gzcompress  ( string $data  [, int $level = -1  ] )

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

http://php.net/manual/en/book.zlib.php

Ответ 3

В самом деле, это невозможно даже в 2014 году, поэтому мне пришлось использовать функцию "exec" с помощью команды zip для linux:

exec("cd \"".$the_directory_you want_to_zip."\" && zip -0 -r \"".$path_zip."\" .");

Ответ 4

Кажется, что он был добавлен/добавлен в файлы перераспределения в PHP 7: ZipArchive:: setCompressionName и ZipArchive:: setCompressionIndex. Не тестировалось.

PS: Причина, по которой она задана отдельно для файлов, а не для всего архива, состоит в том, что файлы внутри ZIP-архива фактически являются самими ZIP файлами и просто "склеены" вместе с одним "главным ZIP-архивом".