tokyo tyrant 在 php 上不能自动反序列化的问题
来源:互联网 发布:代办网络经营许可证 编辑:程序博客网 时间:2024/04/30 00:55
前一阵试用 tokyo tyrant 碰到一个麻烦,
在php上用memcache接口,取出数据的时候,不会自动反序列化。比如了一个 array(1,2,3,4,5),出来就是 'a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}' 了。
用Wireshark 跟踪了一下,发现和标准memcached返回的数据里差一个字节。去看了下 memcached协议,发现这个字节是个客户端的标记 flag 。存储的时候放置这个标志,取的时候照样返回。php 的 memcache扩展应该就是用这个字节来标志是否是 php 的数据。如果匹配则反序列化。对比 tokyo tyrant的源代码,发现它在存取的时候无视了这个标记位(其实还无视了一些其他东西,比如过期时间之类的,只用了 key 和 value以及他们的长度),所以就有了这个结果。
之前考虑改 tokyo tyrant ,做了个补丁。不过正如 xdanger所说,这个办法不好。之前测试得不仔细,后来试了几个不同的类型,果然是出了问题。于是又考虑再改 php的客户端。让它不管什么类型存储的时候都去做序列号。似乎是解决了反序列号问题。这样修改版的客户端放的东西原版的能正常读取,但原版客户端一旦放了常规值就会出毛病。这一下同时改了客户端和服务端,另外,压缩的问题也还是没解决。看来这个问题还真的很难。
php 客户端补丁,修改 memcache.c
http://syre.blogbus.com/files/12229540080.diff
tokyo tyrant 补丁,修改 ttserver.c
http://syre.blogbus.com/files/12227686210.diff
- tokyo tyrant 在 php 上不能自动反序列化的问题
- tokyo tyrant 在 php 上不能自动反序列化的问题
- 扩展memcached客户端解决Tokyo Tyrant的反序列化问题
- Debian下PHP的Tokyo Tyrant安装配置及测试
- Tokyo Cabinet和Tokyo Tyrant及PHP扩大包的安装
- Tokyo Tyrant
- Tokyo Tyrant
- 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant
- 安装Tokyo Cabinet & Tokyo Tyrant的过程记录
- 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant
- 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant
- Tokyo Cabinet和Tokyo Tyrant的详细安装手册
- Debian下PHP扩展的Tokyo Tyrant安装配置及测试
- php 反序列化
- php反序列化
- Tokyo Tyrant(ttserver)在大数据量下的不稳定案例
- Tokyo Cabinet与 Tokyo Tyrant
- kryo的反序列化异常问题
- 字符串匹配-BM算法
- 字符串匹配-基本搜索方法
- 32到64位的数据迁移
- vim 简介
- ALSA SOC架构关键点
- tokyo tyrant 在 php 上不能自动反序列化的问题
- ftp可以正常登录,但登录后执行ftp命令没有响应
- 字符串匹配-位并行和复杂度表示法
- ibatis这问题哪里错了,查不出数据
- 源点-汇点最短路径快速算法(2)-欧几得米试探法-类Dijkstra算法
- ActiveX插件点滴
- 病毒编写教程---Win32篇(四)
- 取得控件的区域
- 关机和重启在Linux Kernel中的哪些函数里实现?