美文网首页
序列化的使用场景

序列化的使用场景

作者: PENG先森_晓宇 | 来源:发表于2022-04-28 16:49 被阅读0次

背景

php中最常用的就是对数组json_encode和json_decode了,在没有json_encode之前,对数组的解析就是使用serialize和unserialize来实现的。由于json_encode效率大于serialize,所以serialize使用的场景也就少了。

说这么多,来了解下序列化的真实定义:在PHP中,序列化用于存储传递PHP 的值,在序列化->反序列化的过程中,同时不丢失其类型和结构的完整。

使用场景

在json_encode代替serialize之后,serialize使用的场景明显少了,但是很多场景仍然必须使用serialize,最常用的就是类的序列化

mq发送消息

生产端代码

  1. 先定义一个接口,发送端代码必须实现该接口。该接口的execution()方法用于消费端消费。
Interface AsyncExecution
{
    public function execution();
}
  1. 定义发送端代码
class CheckPlanTrigger  implements AsyncExecution
{
    protected $method = '';
    protected $params = [];
    
    public function __construct()
    {
    }
    public function execution()
    {
        //TODO
        //耗时的io操作
    }
}
$obj = new CheckPlanTrigger();
$data = [
        'obj' => serialize($obj),
     ];
return Commit::sendCmdNew(new Cmd(self::CMD, Define::PROXY['sdsroute'], Define::TOPIC['sds_route']), $data, $hashKey, $timestamp);

消费端代码

    public function myExecute($arrInput)
    {
        try {
            $o = unserialize($arrInput['obj']);
            if ($o instanceof \AsyncExecution) {
                $o->execution();
            } else {
                // throw new Error(-1,"无法执行异步操作");
                Log::warning("无法执行异步操作");
            }
        } catch (\Exception $e) {
            throw $e;
        } 
        return true;
    }

通常一些简单的消息可以发送一个json串,下游decode一下就好。如果需要传递的消息是非常复杂,计算量非常耗时时,可以使用上面这种方式,将耗时计算的操作放在下游,这样qps可以瞬间提升。

使用kafka的目的:解耦,消峰,异步。此例子其实就是异步的实现,提高了qps。

相关文章

  • Java序列化

    含义、意义使用场景 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的...

  • JAVA的序列化与反序列化

    java的序列化使用场景java的序列化思想是通过序列化将对象转换为字节流,然后通过反序列能将字节流翻译为对象。那...

  • 2019-11-14

    序列化的使用场景 如果只是单纯的用于intent的数据传递,使用parcelable。 如果需要存储,使用Seri...

  • 序列化的使用场景

    背景 php中最常用的就是对数组json_encode和json_decode了,在没有json_encode之前...

  • C#序列化

    序列化操作 序列化对象声明 对类使用序列化时,标注那些不需要序列化的字段。 序列化只能针对字段使用。 使用序列化相...

  • 序列化与反序列化

    场景:项目中,将对象序列化,base64编码,存入到redis缓存中。使用时在反序列化取出来。问题:对象增加新的基...

  • 高性能Java序列化框架Fse发布

    高性能Java序列化框架Fse发布 [TOC] 使用场景 将Java对象序列化为二进制数据进行保存,以及二进制数据...

  • Parcel 共享内存分析

    序列化的使用场景 将对象数据保存到存储设备中; 将对象数据用于网络上传输; 将对象数据用于进程之间的传输; 序列化...

  • 180919总结这几天学到的内容

    如何让python的json包序列化datetime 使用场景:通过pymysql获得的数据库中的datetime...

  • Java序列化心得(一):序列化设计和默认序列化格式的问题

    最近在工作中指导新人开发,任务内容涉及到序列化,发现很多初学者对于序列化的概念以及使用的场景比较模糊,所以为他们总...

网友评论

      本文标题:序列化的使用场景

      本文链接:https://www.haomeiwen.com/subject/lonrsrtx.html