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 rpc使用实例(同时有Java和Delphi客户端的例子)