Какой метод сжатия использовать в PHP?

Обычно мы не объявляем массивы с типом Array. Приведенный ниже код работает для нас. Попробуйте.

@property.array(Address)
addresses?: Address[];
61
задан Mikko Rantalainen 11 June 2013 в 05:53
поделиться

3 ответа

Все они могут использоваться. Между тремя существуют тонкие различия:

  • gzencode () использует формат файла GZIP, то же как gzip инструмент командной строки. Этот формат файла имеет заголовок, содержащий дополнительные метаданные, ВЫКАЧАЙТЕ сжатые данные и нижний колонтитул, содержащий контрольную сумму CRC32 и проверку длины.
  • gzcompress () использует формат ZLIB. Это имеет более короткий заголовок, служащий только, чтобы определить формат сжатия, ВЫКАЧАТЬ сжатые данные и нижний колонтитул, содержащий контрольную сумму ADLER32.
  • gzdeflate () использует сырые данные, ВЫКАЧИВАЮТ алгоритм самостоятельно, который является основанием для обоих из других форматов.

Все три используют тот же алгоритм под капотом. gzencode() добавляет способность включать исходное имя файла и другие данные о состоянии окружающей среды (это не использовано, просто сжав строку). gzencode() и gzcompress() оба добавляют контрольную сумму, таким образом, целостность архива может быть проверена, который может быть полезным по ненадежной передаче и методам устройства хранения данных. Если все хранится локально, и Вам не нужны никакие дополнительные метаданные затем gzdeflate() был бы достаточен. Для мобильности я рекомендовал бы gzencode() (Формат GZIP), который, вероятно, лучше поддерживается, чем gzcompress() (Формат ZLIB) среди других инструментов.

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

  • gzencode('') = 20 байтов
  • gzcompress('') = 8 байтов
  • gzdeflate('') = 2 байта
82
ответ дан thomasrutter 24 November 2019 в 17:10
поделиться

Я не эксперт PHP и не могу ответить на поставленный вопрос, но кажется, что существует большое предположение продолжения здесь и нечеткой предлагаемой информации.

ВЫКАЧАЙТЕ название алгоритма сжатия, который используется ZLIB, GZIP и другими. В теории GZIP поддерживает альтернативные алгоритмы сжатия, но на практике, нет ни одного.

Нет такой вещи как "алгоритм GZIP". GZIP использует ВЫКАЧИВАТЬ алгоритм и помещает данные структурирования вокруг сжатых данных. С GZIP можно добавить вещи как имя файла, время файла, CRC, даже комментария. Эти метаданные являются дополнительными, тем не менее, и много gzippers просто опускают их.

ZLIB подобен, кроме с другим, более ограниченным набором метаданных и определенным 2-байтовым заголовком.

Это - все в IETF RFCs 1950, 1951, и 1952.

Чтобы сказать, что "gzip алгоритм сжимается лучше, чем, ВЫКАЧИВАЮТ", просто ерунда. Нет никакого gzip алгоритма. И алгоритм, используемый в формате GZIP, ВЫКАЧИВАЮТ.

46
ответ дан Cheeso 24 November 2019 в 17:10
поделиться

Все методы являются по существу тем же, различие между ними находится главным образом в заголовках. лично я использовал бы gzencode, это произведет вывод, который равен вызову командной строки к gzip утилите.

6
ответ дан Jan Jungnickel 24 November 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: