tp框架 yar扩展rpc调用
1.安装yar扩展,根据使用的php版本进行下载
https://pecl.php.net/package/yar
https://pecl.php.net/package/msgpack
2.解压php_msgpack.dll 和php_yar.dll 到 php配置 ext 目录下
3.在对应的php.ini 下添加
extension=msgpack
extension=yar
4.查看扩展是否安装
5.说用phpstudy添加两个站点
6.tp5.0后去除了内置的yar类,可以自己手动添加上
<?php abstract class Yar { /** * 构造函数 * @access public */ public function __construct() { //控制器初始化 if (method_exists($this, '_initialize')) { $this->_initialize(); } //判断扩展是否存在 if (!extension_loaded('yar')) { throw new \Exception('not support yar'); } //实例化Yar_Server $server = new \Yar_Server($this); // 启动server $server->handle(); } /** * 魔术方法 有不存在的操作的时候执行 * @access public * @param string $method 方法名 * @param array $args 参数 * @return mixed */ public function __call($method, $args) { } }
7.站点 rpca.com 代表提供 Yar_Server,新建一个控制器
<?php namespace app\controller; use Yar; class RpcServe extends Yar { /** * 这里是测试,描述 * @params string $name 参数 * @return string 返回参数 */ public function test($name = 'yar') { return 'hello '.$name; } }
8.在浏览器 输入 http://rpca.com/RpcServe ,显示以下表示成功
9.在站点rcpb.com 下建立客户端,进行调用 rcpa.com 的方法
<?php namespace app\controller; use app\BaseController; class Index extends BaseController { public function test() { $client = new \Yar_Client('http://rpca.com/RpcServe'); echo $client->test('小猪'); die; } }
10.在浏览器输入 http://rpcb.com/index/test ,调用成功