Я строю класс для создания ZIP-файлов в PHP. Альтернатива ZipArchive, если она не разрешена на сервере. Что-то, что можно использовать с этими бесплатными серверами.
Это уже своего рода работа, сборка ZIP-структур с помощью PHP и использование gzdeflate () для генерации сжатых данных.
Проблема в том, что gzdeflate () требует от меня загрузки всего файла в память, и я хочу, чтобы класс работал с ограничением 32 МБ памяти. В настоящее время он хранит файлы размером более 16 МБ без какого-либо сжатия.
Я полагаю, мне следует сжать данные в блоках, 16 МБ на 16 МБ, но я не знаю, как объединить результат двух gzdeflate ().
Я тестировал его, и похоже, что в последних 16-битах ему нужна математика, вроде buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe
, он работает, но не для всех образцов ...
Вопрос: Как объединить два потока DEFLATEd без его распаковки?