PHP RPC框架 hprose 上手玩玩

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP RPC框架 hprose 上手玩玩相关的知识,希望对你有一定的参考价值。

参考技术A RPC是啥? 远程过程调用, 简单来说就是 另一种api调用的形式, 不过是在tcp层次的。
例子:
php 7.2.9
composer 1.8.5
composer.json

server.php

client.php

最后跑起来:
php server.php // 没有输出,会常驻进程, 如果有输出那就是报错啦。

php client.php // 输出:

完毕!

hprose 1.0(rpc 框架) - 内部数据标准

 

hprose 1.0 内部数据标准

方法的描述  {
    // 请求调用格式
    ‘C‘.writeString(‘method1‘).‘a‘.count($params).‘{‘.‘m‘.count($params)‘{‘. xxx .‘}‘.‘}‘.‘z‘
    
    // 请求返回格式
    ‘R‘.serialize($result).‘z‘
}


// 数据类型的描述
serialize == {
    null == {
        writeNull() --->  ‘n‘
    }
    
    is_scalar == {
        writeNaN() --->  ‘N‘
        writeInteger(10) --->  ‘i10;‘
        writeLong(2000) --->  ‘l2000;‘
        writeBoolean(true) --->  ‘t‘  或者  ‘f‘
        writeDouble(3.6) --->  ‘d000;‘
        writeDouble(正无穷大、负无穷大) --->  ‘I+‘ 或者 ‘I-‘
        writeEmpty() --->  ‘e‘
        writeUTF8Char($val) --->  ‘u‘.‘‘
        writeStringWithRef($val) --->  writeString($val)
        writeBytes($bytes)  --->  ‘b‘.strlen($bytes).‘"‘.$bytes.‘"‘
        writeBytesWithRef($val)  --->  writeBytes($bytes);
        writeString($str) --->  ‘s‘.(strlen(iconv(‘UTF-8‘, ‘UTF-16LE‘, $str)) >> 1).‘"‘.$str.‘"‘
    }

    is_array == {
        writeArray($array) --->  ‘a‘.count($array)‘{‘. xxx .‘}‘
        writeAssocArray($map) --->  ‘m‘.count($map)‘{‘. xxx .‘}‘
    }

    is_object == {
        writeDateTime($datetime) --->  $datetime->format(‘\DYmd\THis.u\Z‘)
        writeMapWithRef($val) --->   writeMap($val)  --->  ‘m‘.count($val)‘{‘. xxx .‘}‘
        writeListWithRef($val) --->  writeList($val) --->  ‘a‘.count($val)‘{‘. xxx .‘}‘
        writeStdClassWithRef($val) --->  writeStdClass($obj)  --->  ‘m‘.count($val)‘{‘. xxx .‘}‘
        writeObjectWithRef($val) --->  writeObject($obj)  --->  {
            $class = get_class($obj); // ‘Dir1\Dir2\Clazz1‘;
            $alias = ‘Dir1_Dir2_Clazz1‘
            ---> ‘c‘.(strlen(iconv(‘UTF-8‘, ‘UTF-16LE‘, $alias)) >> 1).‘"‘.$alias.‘"‘.count($props).‘{‘.writeString(strtolower($prop[0]) . substr($prop, 1)).‘}‘.‘o‘.‘0‘.‘{‘.$prop->getValue($obj).‘}‘
        }
    }
}

 

以上是关于PHP RPC框架 hprose 上手玩玩的主要内容,如果未能解决你的问题,请参考以下文章

hprose 1.0(rpc 框架) - 内部数据标准

基于Hprose RPC框架

hprose rpc使用实例(同时有Java和Delphi客户端的例子)

php rpc好用吗,有啥优缺点?php rpc框架哪个好?

RPC是什么

RPC是什么