Im not sure your numbers are right, tho you could use gzdeflate
instead of gzcompress
as gzcompress
adds 6 bytes to the output (2 extra bytes at the beginning and 4 extra bytes at the end).
A simple test shows a 1756800 length string compressed to 99 bytes by double compressing it, 5164 bytes if compressed once.
$string = str_repeat('1234567890' . implode('', range('a', 'z')), 48800);
echo strlen($string); //1756800 bytes
$compressed = gzdeflate($string, 9);
$compressed = gzdeflate($compressed, 9);
echo strlen($compressed); //99 bytes
echo gzinflate(gzinflate($compressed));