InitPHP (A PHP Framework) 用户手册
第3章 3.7 RPC调用
关于RPC调用:
服务提供方:
配置:
/*********************************RPC服务*****************************************/
/**
 * RPC配置
 * RPC分两种,服务提供者-provider和服务使用者-customer
 */
$InitPHP_conf['provider']['allow'] = array(
	"user"
); //允许访问的Service,例如userService,则是user。如果带path,则xxx/user
$InitPHP_conf['provider']['allow_ip'] = array(
	"127.0.0.2", "192.168.*.*", "127.0.0.*"
); //允许内部调用的IP地址,如果需要填写ip段,则可以通过 192.168.*.*,使用*来匹配
rpc.php
define("APP_PATH", "../app/"); 
header("Content-Type:text/html; charset=utf-8");   
require_once('../../initphp/initphp.php'); //导入配置文件-必须载入
require_once(APP_PATH . 'conf/comm.conf.php'); //公用配置
InitPHP::rpc_init(); //提供RPC服务
userService
class userService extends Service {

	/**
	 * @var userDao
	 */
	private $userDao;

	public function getUser() {
		return "initphp";
	}

	public function getUserInfo($username, $age) {
		return "Username:" . $username . " age:" . $age;
	}

	/**
	 * 创建一个用户
	 */
	public function createUser($user) {
		$this->userDao = InitPHP::getDao("user");
		return $this->userDao->addUser($user);
	}

}
服务使用方:
配置:
$InitPHP_conf['customer'] = array(
	"default" => array( //可以进行分组
		"host" => array("127.0.0.1"), //服务提供者所在的服务器的IP地址,一般是内网IP地址。可以填写多台服务器
		"file" => "/initphp_3.8/demo/www/rpc.php" //访问服务的入口文件,例如加上IP地址:http://localhost/rpc.php
	)
);
使用:
try {
	//调用RPC服务。调用userService中的getUserInfo方法,参数是:array("我是神TEST", "10")
	//具体参见InitPHP::getRemoteService
	$ret = InitPHP::getRemoteService("user", "getUserInfo", array("我是神TEST", "10"));
	print_r($ret);
} catch (exceptionInit $e) {
	//服务调用异常
	echo "Exection:[" . $e->getCode(). "]".$e->getMessage();
} catch (Exception $e) {
	//业务异常
	echo "Exection:[" . $e->getCode(). "]".$e->getMessage();
}
结果输出:
Username:我是神TEST age:10