igbinary 是一个 php 的第三方扩展,相对于 php 自带的 serialize,igbinary 具有性能高,节省空间的特点,在某些高要求的场景中使用它是个不错的方案。
igbinary 使用一些对应标记和信息分隔变量中数组的键名和值等其它内容,并且依赖这些标记信息进行反序列化。
如数组
array(true, null, 'foo'=>'bar', 'text', 123)
序列化后大概是这种形式
[STX][DC4][ACK][ENQ][ACK][SOH][DC1][EXT]foo[DC1][EXT]bar[ACK][STX][DC1][EOT]text[ACK][EXT][ACK]{
黑色标记的内容,如 [STX] 代表一个位标记(1个字节),这里只是形式表现,并不代表标记就是这样。
特点对比
序列化性能
json > igbinary > serialize反序列化性能
igbinary > serialize > json序列化后的体积
igbinary < json < serialize兼容性
json > serialize > igbinary
扩展地址
https://pecl.php.net/package/igbinary
https://github.com/igbinary/igbinary
安装方式
Windows 平台将 php_igbinary.dll 放入 php 的 ext 目录中,并在 php.ini 中加入 extension=php_igbinary.dll
U(*)nix(Linux,FreeBSD,Mac等)用户解压 igbinary 源码,并进入 igbinary 源码目录,执行
#这里的 /usr/local 换成你自己安装 php 的根路径 /usr/local/bin/phpize ./configure --with-php-config=/usr/local/bin/php-config make install
检查你的 php.ini 中 extension_dir 配置是否正确
然后在 php.ini 中加入 extension=igbinary.so
最后无论是 Windows 或是 Unix,配置好后重启你的 php-fpm 或是 apache 使配置生效
使用方式
$var = array(...); //一些数据 $str = igbinary_serialize($var); $var = igbinary_unserialize($str);
评论 共有 0 条评论
暂无评论,快发表你的评论吧。