php序列化腰治疗方法,PHP 序列化选择

今天接手一个新项目 codis监控管理

读了一天的代码, 发现数组转存到redis中序列化采用的是serialize

总结了下 php 的序列化json_encode

serialize

base64_encode

也就上面三种常用序列化方式了. 当然还有pack.这个暂时没玩明白

本文主要比较json_encode 和 serialize 两个, base64_encode 编码后字节数据太大,如果是数据传输保证数据一致性,我会用base64_encode

从网上找个代码:<?php

/*

* File Name: test.php

* Author: Len

* mail: i@91coder.org

* Created Time: Wed 17 May 2017 10:50:17 PM CST

*

*/

$target = array(

'battle_id' => 257,

'user_id' => 41248,

'user_id2' => 23989,

'player' => 41248,

'formation' => Array

(

'41248' => 1,

'23989' => 2

),

'result' => 1,

'battle_type' => 1,

'speed' => Array

(

'41248' => 0,

'23989' => 0

)

);

$json = json_encode($target);

$seri = serialize($target);

echo "json :", strlen($json), PHP_EOL;

echo "serialize :", strlen($seri), PHP_EOL;

$stime = microtime(true);

for ($i = 0; $i < 10000; $i++) {

json_encode($target);

}

$etime = microtime(true);

echo "json_encode :", ($etime - $stime), PHP_EOL;

$stime = microtime(true);

for ($i = 0; $i < 10000; $i++) {

json_decode($json, true);

}

$etime = microtime(true);

echo "json_decode :", ($etime - $stime), PHP_EOL;

$stime = microtime(true);

for ($i = 0; $i < 10000; $i++) {

serialize($target);

}

$etime = microtime(true);

echo "serialize :", ($etime - $stime), PHP_EOL;

$stime = microtime(true);

for ($i = 0; $i < 10000; $i++) {

unserialize($seri);

}

$etime = microtime(true);

echo "unserialize :", ($etime - $stime), PHP_EOL;

PHP5.5 执行结果[root@bf ~]#php -v

PHP 5.5.23 (cli) (built: Nov 23 2015 15:12:07)

Copyright (c) 1997-2015 The PHP Group

Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

[root@bf ~]#php test.php

json :156

serialize :222

json_encode :0.018645048141479

json_decode :0.041597843170166

serialize :0.022917985916138

unserialize :0.024193048477173

PHP7 执行结果[root@localhost question_game_admin]# /usr/local/php7/bin/php -v

PHP 7.0.3 (cli) (built: Oct 14 2016 21:38:26) ( NTS )

Copyright (c) 1997-2016 The PHP Group

Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

[root@localhost question_game_admin]# /usr/local/php7/bin/php test1.php

json :156

serialize :222

json_encode :0.0072259902954102

json_decode :0.029087066650391

serialize :0.0057480335235596

unserialize :0.012353897094727总结执行结果是 json_encode 性能上明显高出serialize 一个量级, 而且json格式可读性很强!

而且serialize 格式化汉字字符标点等会存在一些问题, 在这里我推荐使用json_encode进行格式化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值