1.客户端:
<?php
//客户端
class client{
private $service;
public function __call($name,$param){
//var_dump($name,$param);
//远程调用要使用的方法
if('service'==$name){
$this->service=$param[0];
return $this;
}
$cli = new swoole_client(SWOOLE_SOCK_TCP);
$cli->connect('127.0.0.1', 9501);
$json_data=json_encode(
[
'service'=>$this->service,
'action'=>$name,
'param'=>$param[0]
]
);
$cli->send($json_data);
$result=$cli->recv();//接收消息
$cli->close();
return json_decode($result,true);
}
}
$cli = new client();
var_dump($cli->service('Cartservice')->cart('6'));
2.远程服务端:
<?php
/*
Class Cartservice{
public function cart($j=0){
return ($j+5);
}
}
*/
spl_autoload_register(function($classname){
require_once("./{$classname}.php");
});
$serv=new swoole_server('127.0.0.1',9501);
$serv->set(array('worker_num'=>2));
$serv->on("receive",function($serv,$fd,$from_id,$data){
//解析客户端协议
$info=json_decode($data,true);
$classname=$info['service'];
$action=$info['action'];
$param=$info['param'];
//调用一个类
$classobj = new $classname;
$result=$classobj->$action($param);
$serv->send($fd,json_encode(['data'=>$result]));
});
$serv->start();
3.服务端的类文件:
<?php
Class Cartservice{
public function cart($j=0){
return ($j+5);
}
}