1 Star 0 Fork 115

myhyperf/ddiot-茶室民宿酒店棋牌室管理系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
rpcClient.php 1.29 KB
一键复制 编辑 原始数据 按行查看 历史
wangchunsheng 提交于 2024-04-06 02:06 +08:00 . rpc测试
#!/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);
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/myhyperf/ddiot.git
git@gitee.com:myhyperf/ddiot.git
myhyperf
ddiot
ddiot-茶室民宿酒店棋牌室管理系统
main

搜索帮助