{ return json_encode($data) . "\n"; } /** * 解析Rpc协议数据 * @param string $bin_data * @return mixed */ public static function decode($bin_data) { return json_decode(trim($bin_data), true); } } } // ==以下调用示例== // 服务端列表 $address_array = array('tcp://127.0.0.1:2015'); // 配置服务端列表 RpcClient::config($address_array); //$serverClient = RpcClient::instance('Zone'); //同步调用数据 //$result = $serverClient->getServerList(); //// ==异步调用== //$serverClient->asend_getServerList(); //$result = $serverClient->arecv_getServerList(); //var_dump($result); $onlineClient = RpcClient::instance('Online'); $result = $onlineClient->getOnline(1); echo '<pre>'; print_r($result); echo '</pre>';
<?php include 'RpcClient.php'; //配置服务端列表 $address_array = array('127.0.0.1:6666', '127.0.0.1:6666'); RpcClient::config($address_array); //检测是否装了swoole扩展有则用swoole_client方式,没有则用socket方式 if (extension_loaded('swoole')) { RpcClient::setSwooleClient(); } // User对应/Jsonrpc/Services/User.php 中的User类 $user_client = RpcClient::instance('User'); // getInfoByUid对应User类中的getInfoByUid方法 $uid = 567; $ret_sync = $user_client->getInfoByUid($uid); var_dump($ret_sync); //通过rpc操作redis的例子 $redis_client = RpcClient::instance('MyRedis'); $set_res = $redis_client->set('jsonrpc', 'hello json rpc654', 30); var_dump($set_res); $get_res = $redis_client->get('jsonrpc'); var_dump($get_res); //调用不存在的函数 $list_res = $redis_client->list('jsonrpc'); var_dump($list_res);
<?php /** * Created by linzl * User: linzl<*****@*****.**> * Date: 15/1/27 * Time: 下午2:55 */ date_default_timezone_set('PRC'); include_once "Clients/RpcClient.php"; $address_array = array('tcp://127.0.0.1:2015', 'tcp://127.0.0.1:2015'); // 配置服务端列表 RpcClient::config($address_array); $uid = 567; // User对应applications/JsonRpc/Services/User.php 中的User类 $user_client = RpcClient::instance('User'); $ret_sync = $user_client->test(); print_r($ret_sync); exit; // getInfoByUid对应User类中的getInfoByUid方法 #$ret_sync = $user_client->getUser(); $i = 1; while ($i < 1000) { $ret_sync = $user_client->getUser(); $i++; } print_r($ret_sync);
public function setClassName($className) { return RpcClient::instance($className); }