Recientemente estoy trabajando en una herramienta de gestión de exportación de datos, que es útil para la compresión de cadenas, así que la grabé y espero que sea útil para otros.
1. ¿Cuáles son las funciones de compresión?
gzcompress: comprime la cadena dada usando el formato de datos ZLIB
gzencode: Crea una cadena comprimida con gzip
gzdeflate: encoge una cadena
bzcompress: comprime una cadena en datos codificados en bzip2
Comparación de eficiencia:
gzcompress es el más rápido y tiene una relación de compresión más alta.
gzdeflate tiene la relación de compresión más alta y es ligeramente más lento que gzcompress.
gzencode está cerca de gzdeflate, pero gzdeflate tiene una ligera ventaja
. bzcompress tiene la velocidad y relación de compresión más lentas.
Nota: Vale la pena mencionar que gzencode puede generar una compresión compatible con el formato gzip. Si se genera en un navegador, puede ser consistente con la codificación GZIP en el protocolo HTTP. Puede usar header('Content-Encoding: gzip'); Salida directa sin descompresión.
2. demostración
<?php
/**
* 压缩工具
*
* ===================================================
*
* gzcompress 速度最快,压缩比率较高。
* gzdeflate 压缩比率最高,速度稍慢于gzcompress
* gzencode 与 gzdeflate 比较接近,gzdeflate稍有优势
* bzcompress 速度最慢,压缩比率最慢。
*
* 因此建议使用 gzcompress 和 gzdeflate
*
* ===================================================
*
* @package Tool
* @author 蝶开三月
*/
class Tool_Compress {
/**
* 压缩(gzcompress)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzcompress($str, $level = 9){
return gzcompress($str, $level);
}
/**
* 解压(gzuncompress)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzuncompress($str){
return gzuncompress($str);
}
/**
* 压缩(gzdeflate)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzdeflate($str, $level = 9){
return gzdeflate($str, $level);
}
/**
* 解压(gzinflate)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzinflate($str){
return gzinflate($str);
}
/**
* 压缩(gzencode)
* 因为是与gzip程序输出兼容的压缩版本,可以与HTTP协议上的GZIP编码契合,可以使用header('Content-Encoding: gzip');直接输出,而不用解压
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzencode($str, $level = 9){
return gzencode($str, $level);
}
/**
* 解压(gzdecode)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzdecode($str){
return gzdecode($str);
}
/**
* 压缩(bzcompress)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcBzcompress($str, $level = 9){
return bzcompress($str, $level);
}
/**
* 解压(bzdecompress)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcBzdecompress($str){
return bzdecompress($str);
}
}