我想压缩TEXT以存储在MySQL中。 所以我只是在php中做gzcompress()然后发送到mysql,但是我也在设置Sphinx全文搜索,如果它可以用一个简单的查询来填充其索引,那就很好了。

select uncompress(thing) from table

但是我仍然想为php中的应用程序而不是mysql进行压缩和解压缩,并且仅将mysql uncompress()函数用于sphinx索引。

mysql文档对压缩功能的说明如下:

Nonempty strings are stored as a

four-byte length of the uncompressed

string (low byte first), followed by

the compressed string.

所以我的问题是...如何构造未压缩字符串的这四个字节的长度? 之后,压缩后的BLOB看起来就像php gzcompress()函数的结果。

从来没有做过,但是这里有一些想法:

1)找到未压缩字符串的长度... strlen()函数应该起作用

2)压缩字符串...您已经完成了这一部分

3)将两者打包在一起以存储在mysql中,按照mysql的要求格式化数字:

php的pack函数:听起来您需要使用格式值" V"作为长度(无符号长... 32位,小尾数字节顺序)

谢谢。 这是我不知道的打包功能。

除了上述正确答案外,请考虑将mb_strlen用于压缩长度。 这样可以避免出现奇数字符的问题。 php.net/manual/en/function.mb-strlen.php

这是我针对这种情况的代码,对于解压缩,您还可以使用PHP并在开始的4个字节之外进行调整。

mysql的输出:

mysql :"select hex(compress('1234512345'))"

0A000000789C3334323631350411000AEB01FF

相当于php:

$string="1234512345";

$data=gzcompress($string);

$len=mb_strlen($string);

$head=pack('V',$len);

echo($head);

echo($data);

PHP的输出:

php test.php  | hexdump -C

00000000  0a 00 00 00 78 9c 33 34  32 36 31 35 04 11 00 0a

mysql uncompress_如何在php中实现mysql compress()函数相关推荐

  1. 技巧实例:如何在.NET中访问MySQL数据库

    引言:如果你不是只在大集团公司工作过的话,你一定会有机会接触到MySQL,虽然它并不支持事务处理,存储过程,但是它提供的功能一定能满足你的大部分需求,另外,简洁的MySQL也有一些它独到的优势,在有些 ...

  2. php mysql 到表最后_如何在PHP中获取MySQL表的最后插入ID?

    如何在PHP中获取MySQL表的最后插入ID? 我有一张表,经常插入新数据. 我需要获取表格的最后一个ID. 我怎样才能做到这一点? 它类似于SELECT MAX(id) FROM table吗? g ...

  3. 如何在docker中运行MySQL实例(转载)

    如何在docker中运行MySQL实例 转自:https://blog.csdn.net/siying8419/article/details/79670246 通常初学者学习docker时,不太清楚 ...

  4. php如何查询数据库,如何在php中查询mysql数据库数据

    如何在php中查询mysql数据库数据 发布时间:2020-07-21 09:23:55 来源:亿速云 阅读:81 作者:Leah 本篇文章给大家分享的是有关如何在php中查询mysql数据库数据,小 ...

  5. mysql连接clickhouse_如何在ClickHouse中使用MySQL客户端

    目录 介绍 安装 2.1成功完成安装后,启动ProxySQL. 创建ClickHouse用户 从MySQL客户端连接到ClickHouse 查询ClickHouse之类的MySQL 局限性 6.1结论 ...

  6. 如何在IDEA中连接mysql数据库以及导入mysql jar包

    一.如何IDEA中链接mysql数据库 1.打开IDEA,然后点击右边的DataBase 2.点击加号,点击DateSourse,然后再选择Mysql 3.然后在以下页面中填入所需要连接数据库的主机名 ...

  7. linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案

    1.vim /etc/my.cnf [mysqld] skip-grant-tables ##追加此行,跳过权限表, 2.重启mysql systemctl restart mysqld 3.mysq ...

  8. mac 二进制安装mysql_如何在MAC中安装mysql二进制分发版

    如何在MAC电脑中安装mysql二进制分发版,对于这个问题,许多用户都还不是很清楚,其实解决的方法也不难,那么具体该怎么做呢?现在小编就告诉大家解决的方法吧. 没有mac的root密码,当前用户有su ...

  9. 如何在Ubuntu中重置MySQL Root密码

    如何在Ubuntu上重置MySQL Root密码 最后更新 2019年2月13日 在本文中,我们将通过使用该--skip-grant-tables选项启动MySQL来重置Ubuntu中的MySQL r ...

最新文章

  1. oracle--表,用户,授权
  2. php xss速查表,2020跨站脚本[xss]速查表 xss cheat sheet
  3. 主页被挟持 火狐浏览器_看过来!关于IE、360浏览器访问学校部分网站的设置说明在这里...
  4. USACO training 2.4.5 Fractions to Decimals题解
  5. 一个35岁腾讯产品经理的忠告:在职场,这件事越早做越好
  6. MongoDB中文社区年终盛典
  7. PreScan中对象沿预设轨迹运动的若干方式介绍
  8. python选择排序_Python实现选择排序
  9. [PyTorch] 卷积函数 and 解卷积函数
  10. 磁盘阵列(RAID)
  11. openSUSE 跨版本升级
  12. 不能对bug视而不见
  13. 快递地址自动识别填充
  14. LZJ的python的第8次打卡
  15. 三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
  16. Why does Markov Matrix contain eigenvalue=1 and eigenvalues less than or equa to1?
  17. C++中的exit()函数
  18. java对上传阿里云视频压缩转码
  19. 下载python后怎么运行代码,怎样下载python的编译器
  20. 基于JavaWeb+MySQL的图书管理系统

热门文章

  1. Stanford_NLP_TOOLS:CRFClassifier
  2. Facebook将在印度测试联网无人机,可连续飞行90天
  3. emoji表情过滤处理
  4. CSS3弹性盒模型布局模块介绍
  5. 10 大编程算法帮助程序员踏上“高手”层次,了解一下,你绝对不亏!
  6. 报表被老板吐槽又多又丑?因为你没有掌握这些动态报表的技巧
  7. 宏锦软件2015年的计划
  8. 年轻人不通人情世故的C++短处中
  9. 从 VC7 的 CHtmlView 不能正常退出谈 CComPtr 使用中的一个误区
  10. How To Set Up a TCP/IP Peer-to-Peer Network Connection