您当前的位置:首页 > 分类 > 技术资讯 > PHP > 正文

PHP MessagePack是什么?

发布时间:2017-03-21 17:02:16      来源:51推一把
【摘要】Its like JSON. but fast and small.官网:http://msgpack.orgPHP官网扩展(msgpack包):http://pecl.php.net/package/msgpack     MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages li
Its like JSON. but fast and small.
官网:http://msgpack.org
PHP官网扩展(msgpack包):http://pecl.php.net/package/msgpack

    MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it’s faster and smaller. Small integers are

encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.

    MessagePack  是一个高效的二进制序列化格式。它让你像JSON一样可以在各种语言之间交换数据。但是它比JSON更快、更小。小的整数会被编码成一个字节,短的字符串仅仅只需要比它的长度多一

字节的大小。

#msgpack包安装
wget http://pecl.php.net/get/msgpack-0.5.2.tgz  #下载
tar zxf msgpack-0.5.2.tgz #解压 可指定解压到具体哪个目录里
cd msgpack-0.5.2 #进入解压后目录
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

#ps phpize,php-config根据实际安装目录操作,如果不记得可以 find / -name phpize或php-config

然后把msgpack.so加到php.ini里,重启php,完成安装
extension=msgpack.so

安装完成后可以phpinfo()查看。


测试样本:
$data = array(0=>abcdefghijklmnopqrstuvwxyz,1=>厦门,abc=>1234567890);

分别对其msgpack_pack,json_encode,serialize,长度为:50,62,87
然后分别执行10000次,耗时:9.95 毫秒,17.45 毫秒,8.85 毫秒
解开执行10000次,耗时:14.76 毫秒,23.93 毫秒,14.61 毫秒

msgpack的性能至少超过json50%,虽然和serialize其实速度差不多,但serialize占用空间明显比较多。
另外,GBK的程序方便了,中文也可以msgpack_pack,用json的话还要批量转换成utf-8之后才能json_encode。

#四种序列化方式
json_encode,serialize,igbinary,msgpack

MessagePack详细解说参考:
http://www.cnblogs.com/lost-1987/articles/3875401.html