<?php
/*
https://core.trac.wordpress.org/ticket/22952
gzencode() == gzip
gzcompress() == zlib (aka. HTTP deflate)
gzdeflate() == *raw* deflate encoding
*/
function _run_function($compress_f, $uncompress_f, $s_orig, $encoding_name)
{
global $compression_level;
$compressed = $compress_f($s_orig, $compression_level, constant($encoding_name));
if ($compressed === false) {
echo "FAIL $compress_f with encoding=$encoding_name". PHP_EOL;
return false;
}
if ($s_orig !== $uncompress_f($compressed)) {
echo "FAIL $uncompress_f after $compress_f with encoding=$encoding_name". PHP_EOL;
return false;
}
echo "PASS $compress_f/$uncompress_f with encoding=$encoding_name". PHP_EOL;
return true;
}
$compression_level = 6; // default level is 6
echo '=========== LATIN STRING ===========' . PHP_EOL;
$str = '!@#$%^&*()QWERTYUIOPSDFGHJKL!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNMa!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD:ZXCVBNM#!@#!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM-!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPD$%^&*()ERTYUIODFGHJ!@#$%^&*()QWERTYUIOPSDFGHJKL:ZXCVBNM]!@#$%^&*()ERTYUIODFGHJKLXCVBNM@#$%^&*()RTYUIOPDKLXCVBNM@#$%^&*()RTYUIOPDFGHJKLCVBNMFGHJTYU%^&RFGHJ4d56g7h8ui7h8ujirqwerqh8';
_run_function('gzencode', 'gzdecode', $str, 'FORCE_GZIP');
_run_function('gzencode', 'gzdecode', $str, 'FORCE_DEFLATE');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_DEFLATE');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_GZIP');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_RAW');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_DEFLATE');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_GZIP');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_RAW');
echo '=========== NON-LATIN STRING ===========' . PHP_EOL;
$str = '布局 1 介绍 布局,简单来说就是设置元素的大小和位置。 Ext 的布局系统包括组件,布局,容器,容器是一种特殊的组件,可以管理组件的大小和位置。 容器是通过 doLayout 来重新计算布局,并更新 DOM. 2 手工布局是不必要的,框架会为你自动处理。';
_run_function('gzencode', 'gzdecode', $str, 'FORCE_GZIP');
_run_function('gzencode', 'gzdecode', $str, 'FORCE_DEFLATE');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_DEFLATE');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_GZIP');
_run_function('gzcompress', 'gzuncompress', $str, 'ZLIB_ENCODING_RAW');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_DEFLATE');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_GZIP');
_run_function('gzdeflate', 'gzinflate', $str, 'ZLIB_ENCODING_RAW');
preferences:
50.47 ms | 402 KiB | 5 Q