提升数据库的效率方法之一--php压缩字符串,节省数据库的存储空间
php 压缩字符串函数:gzcompress()
php解压字符串函数:gzuncompress()
效果图:
代码:
<?php $str = "司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”司马法曰:“国虽大,好战必亡;天下虽平,忘战必危。”"; $stred = gzcompress($str); echo '<h2 style="color:red">原始字符串:</h2>'; echo $str.'<br><hr>'; echo '原始字符串的长度:'.strlen($str).'<br>'; echo '编码后字符串的长度:'.strlen($stred).'<br>'; $strBase64 = base64_encode($stred); echo '编码后base64又编码的字符串长度,此编码可以存入数据库內:'.strlen($strBase64).'<br>'; echo '<h2 style="color:red">base64编码后的字符串:</h2>'; echo $strBase64.'<br>'; $deBase64 = base64_decode($strBase64); echo '<h2 style="color:red">解码的字符串:</h2>'; echo gzuncompress($deBase64).'<br><hr>'; $unstred = gzuncompress($stred); echo '解码前的字符串长度:'.strlen($stred).'<br>'; echo '解码后的字符串长度:'.strlen($unstred).'<br>';
字符串实验时候的压缩率,实际情况要看字符串内容,以2500长度的字符串来计算:简体字是 5.3% ;繁体字的压缩效率是很低的,实验时压缩率在 40% 左右。越是重复的字符串,压缩效果越好,不重复的字符串压缩效果越差。以下是封装的函数:
/** @param bool $isComp true 为压缩字符串,false 为解压字符串 @param string $str 要压缩/解压的字符串 @return string 压缩/解压缩的字符串 */ function strCompress($isComp, $str) { if($isComp) return base64_encode(gzcompress($str)); else return gzuncompress(base64_decode($str)); }