欧阳简之 > PHP 第三方序列化扩展 igbinary

热爱代码,对每一行代码保持一颗敬畏之心。


Notice: Trying to access array offset on value of type null in /data/app/nginx/html/oyjz/usr/plugins/MarkdownParse/ParsedownExtra.php on line 225

Notice: Trying to access array offset on value of type null in /data/app/nginx/html/oyjz/usr/plugins/MarkdownParse/ParsedownExtra.php on line 225

Notice: Trying to access array offset on value of type null in /data/app/nginx/html/oyjz/usr/plugins/MarkdownParse/ParsedownExtra.php on line 285

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);
tagged by none