31 Star 244 Fork 87

店滴云物联网开源框架 / ddiot-茶室民宿酒店棋牌室管理系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
rpcClient.php 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
苏晓尘 提交于 2024-04-17 18:11 . 公司新增未选地址验证
#!/usr/bin/env php
<?php
/**
* This file is part of EasySwoole.
*
* @link https://www.easyswoole.com
* @document https://www.easyswoole.com
* @contact https://www.easyswoole.com/Preface/contact.html
* @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
*/
$data = [
'service' => 'ServiceOne', // 需要调用的服务名称
'module' => 'ModuleOne', // 需要调用的服务下的子模块名称
'action' => 'action', // 需要调用的服务下的子模块的方法名称
'arg' => ['a', 'b', 'c'], // 需要传递的参数
];
$raw = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// tcp://127.0.0.1:9600(示例请求地址) 是 rpc 服务端的地址,这里是本地,所以使用 127.0.0.1
// 开发者需要根据实际情况调整进行调用
$fp = stream_socket_client('tcp://127.0.0.1:9600');
fwrite($fp, pack('N', strlen($raw)) . $raw); // pack 数据校验
$try = 3;
$data = fread($fp, 4);
if (strlen($data) < 4 && $try > 0) {
$data .= fread($fp, 4);
$try--;
usleep(1);
}
// 做长度头部校验
$len = unpack('N', $data);
$data = '';
$try = 3;
if (strlen($data) < $len[1] && $try > 0) {
$data .= fread($fp, $len[1]);
$try--;
usleep(1);
}
if (strlen($data) != $len[1]) {
echo 'data error';
} else {
$data = json_decode($data, true);
// 这就是服务端返回的结果
var_dump($data);
}
fclose($fp);
PHP
1
https://gitee.com/wayfirer/ddiot.git
git@gitee.com:wayfirer/ddiot.git
wayfirer
ddiot
ddiot-茶室民宿酒店棋牌室管理系统
main

搜索帮助