mysql uncompress_如何在php中实现mysql compress()函数
我想压缩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()函数相关推荐
- 技巧实例:如何在.NET中访问MySQL数据库
引言:如果你不是只在大集团公司工作过的话,你一定会有机会接触到MySQL,虽然它并不支持事务处理,存储过程,但是它提供的功能一定能满足你的大部分需求,另外,简洁的MySQL也有一些它独到的优势,在有些 ...
- php mysql 到表最后_如何在PHP中获取MySQL表的最后插入ID?
如何在PHP中获取MySQL表的最后插入ID? 我有一张表,经常插入新数据. 我需要获取表格的最后一个ID. 我怎样才能做到这一点? 它类似于SELECT MAX(id) FROM table吗? g ...
- 如何在docker中运行MySQL实例(转载)
如何在docker中运行MySQL实例 转自:https://blog.csdn.net/siying8419/article/details/79670246 通常初学者学习docker时,不太清楚 ...
- php如何查询数据库,如何在php中查询mysql数据库数据
如何在php中查询mysql数据库数据 发布时间:2020-07-21 09:23:55 来源:亿速云 阅读:81 作者:Leah 本篇文章给大家分享的是有关如何在php中查询mysql数据库数据,小 ...
- mysql连接clickhouse_如何在ClickHouse中使用MySQL客户端
目录 介绍 安装 2.1成功完成安装后,启动ProxySQL. 创建ClickHouse用户 从MySQL客户端连接到ClickHouse 查询ClickHouse之类的MySQL 局限性 6.1结论 ...
- 如何在IDEA中连接mysql数据库以及导入mysql jar包
一.如何IDEA中链接mysql数据库 1.打开IDEA,然后点击右边的DataBase 2.点击加号,点击DateSourse,然后再选择Mysql 3.然后在以下页面中填入所需要连接数据库的主机名 ...
- linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案
1.vim /etc/my.cnf [mysqld] skip-grant-tables ##追加此行,跳过权限表, 2.重启mysql systemctl restart mysqld 3.mysq ...
- mac 二进制安装mysql_如何在MAC中安装mysql二进制分发版
如何在MAC电脑中安装mysql二进制分发版,对于这个问题,许多用户都还不是很清楚,其实解决的方法也不难,那么具体该怎么做呢?现在小编就告诉大家解决的方法吧. 没有mac的root密码,当前用户有su ...
- 如何在Ubuntu中重置MySQL Root密码
如何在Ubuntu上重置MySQL Root密码 最后更新 2019年2月13日 在本文中,我们将通过使用该--skip-grant-tables选项启动MySQL来重置Ubuntu中的MySQL r ...
最新文章
- oracle--表,用户,授权
- php xss速查表,2020跨站脚本[xss]速查表 xss cheat sheet
- 主页被挟持 火狐浏览器_看过来!关于IE、360浏览器访问学校部分网站的设置说明在这里...
- USACO training 2.4.5 Fractions to Decimals题解
- 一个35岁腾讯产品经理的忠告:在职场,这件事越早做越好
- MongoDB中文社区年终盛典
- PreScan中对象沿预设轨迹运动的若干方式介绍
- python选择排序_Python实现选择排序
- [PyTorch] 卷积函数 and 解卷积函数
- 磁盘阵列(RAID)
- openSUSE 跨版本升级
- 不能对bug视而不见
- 快递地址自动识别填充
- LZJ的python的第8次打卡
- 三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
- Why does Markov Matrix contain eigenvalue=1 and eigenvalues less than or equa to1?
- C++中的exit()函数
- java对上传阿里云视频压缩转码
- 下载python后怎么运行代码,怎样下载python的编译器
- 基于JavaWeb+MySQL的图书管理系统
热门文章
- Stanford_NLP_TOOLS:CRFClassifier
- Facebook将在印度测试联网无人机,可连续飞行90天
- emoji表情过滤处理
- CSS3弹性盒模型布局模块介绍
- 10 大编程算法帮助程序员踏上“高手”层次,了解一下,你绝对不亏!
- 报表被老板吐槽又多又丑?因为你没有掌握这些动态报表的技巧
- 宏锦软件2015年的计划
- 年轻人不通人情世故的C++短处中
- 从 VC7 的 CHtmlView 不能正常退出谈 CComPtr 使用中的一个误区
- How To Set Up a TCP/IP Peer-to-Peer Network Connection