Можно ли изменить уровень сжатия и / или метод, используемый классом ZipArchive?
ZipArchive
В настоящее время это невозможно, согласно сообщению об ошибке open на php.net .
Как указано в предыдущем посте, вы не можете сделать это с Zip. Если указание уровня сжатия важнее, чем метод архивации, тогда PHP zlib позволяет это:
string gzcompress ( string $data [, int $level = -1 ] )
$ level - уровень сжатия. Может быть задано как 0 для без сжатия до 9 для максимального сжатия.
http://php.net/manual/en/book.zlib.php
Похоже, что это было реализовано / добавлено в файлы перераспределения в PHP 7: ZipArchive :: setCompressionName и ZipArchive :: setCompressionIndex . Не проверено.
PS: Причина, по которой он устанавливается индивидуально для файлов, а не для всего архива, заключается в том, что файлы внутри ZIP-архива фактически являются самими ZIP-файлами и просто «склеиваются» в один «главный ZIP-архив».
Действительно, это невозможно даже в 2014 году, поэтому мне пришлось использовать функцию "exec" с командой zip для linux:
exec("cd \"".$the_directory_you want_to_zip."\" && zip -0 -r \"".$path_zip."\" .");