
server.php
<?php
$server = new Swoole\server('0.0.0.0',9502);
$server->set([
'worker_num'=>5
]);
$server->on('receive',function($server,$fd,$id,$data){
echo '客户端发送数据来了!';
$jsonData=json_decode($data,true);
$className=$jsonData['service'];
$actionName=$jsonData['action'];
$id=$jsonData['params']['id']
include_once __DIR__.'/server/'.$className.'.php';
$obj=new $className;
$data=$obj->$actionName($id);
$server->send($fd,json_encode($data));
});
$server->start();
client.php
class Client{
protected $ip;
protected $port;
protected $serviceName;
public funciton __construct($ip,$port){
$this->ip=$ip;
$this->port=$port;
}
public funciton __call($name,$params){
if($name=='serevice'){
$this->serviceName=$name;
return $this;
}
$client = new Swoole\client(SWOOLE_SOCK_TCP);
$client->connect('127.0.0.1',9502);
//rpc通讯 自定义的协议
$data=[
'service'=>'UserService',//服务名称
'action'=>'info',//方法
'token'=>'',
'params'=>['id'=>11111]
];
$client->send($data);
$recev = $client->recv();
var_dump($recv);
}
}
$client= new Client('127.0.0.2',9502);
$client->service('UserService')->info(5);

文章介绍了使用Swoole框架在PHP中创建一个简单的RPC服务器,客户端通过TCP连接调用服务并处理响应。展示了如何在server.php中接收和处理请求,以及client.php中的客户端调用和接收服务响应的过程。
1488

被折叠的 条评论
为什么被折叠?



