GitHub - kuaikuaikim/dubbo-php-client: Dubbo的php客户端(the php client for dubbo)

[](#dubbo-php-client)dubbo-php-client

the dubbo php client(中文说明往下拉)

Dubbo is a distributed service framework empowers applications with service import/export capability with high performance RPC.

This is only dubbo php clinet implementation. It's only support jsonRPC now.
you can see the example for the dubbo-jsonRPC-demo which i write before.

[](#notice)Notice:

you must start dubbo and zookeeper,register prividers first.

[](#installation)Installation

If you have not installed zookeeper extension for php,then

sudo apt-get install php-pear php5-dev make
sudo pecl install zookeeper

Maybe occuring an error with "zookeeper support requires libzookeeper" when you install the zookeeper extension,you should install the libzookeeper needed.

cd ${your zookeeper home dir}/src/c/
./configure
make
sudo make install

Add zookeeper.so to your php.ini(/etc/php5/apache2/php.ini and /etc/php5/cli/php.ini)

extension="/usr/lib/php5/20121212/zookeeper.so"

[](#require-dubbo-php-client-package-to-your-projectcomposer)Require dubbo-php-client package to your project(composer)

composer require -vvv "quickj/dubbo-php-client:dev-master"

[](#usage)Usage

use DubboPhp\Client\Client;
$options = [
'registry_address' => '127.0.0.1:2181',
'version' => '1.0.0',
'group' =>null,
'protocol' => 'jsonrpc'
];
try {
$dubboCli = new Client($options);
$testService = $dubboCli->getService("com.dubbo.demo.HelloService");
$ret = $testService->hello("dubbo php client");
var_dump($ret);
$mapRet = $testService->mapEcho();
var_dump($mapRet);
$objectRet = $testService->objectEcho();
var_dump($objectRet);
/**
* getService method support 2 way. If the forceVgp = true, It will assign the function parameter to service version,group and protocol. Default way is assign the $options configs to these.
* getService支持两种方式调用。如果forceVgp=true, 该方法将使用传参来绑定服务的版本号,组和协议。默认方式是使用$options数组里的配置绑定。
*/
$testServiceWithvgp = $dubboCli->getService("com.dubbo.demo.HelloService","1.0.0",null, $forceVgp = true);
$vgpRet = $testServiceWithvgp->hello("this request from vgp");
var_dump($vgpRet);
} catch (\DubboPhp\ClientDubboPhpException $e) {
print($e->getMessage());
}

[](#dubbo-php-client-%E4%B8%AD%E6%96%87%E8%AF%B4%E6%98%8E)dubbo-php-client 中文说明

DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架
这是dubbo的唯一php客户端,目前只支持jsonRPC协议,将来会支持多种协议。你可以查看我之前写的dubbo-jsonRPC-demo例子。

[](#%E6%B3%A8%E6%84%8F)注意:

使用之前你必须安装和启动dubbo,zookeeper,注册服务者。

[](#%E5%AE%89%E8%A3%85)安装

如果你还没安装php的zookeeper扩展,需要

sudo apt-get install php-pear php5-dev make
sudo pecl install zookeeper

有可能安装过程中会报错"zookeeper support requires libzookeeper",说明缺少libzookeeper库,你首先需要安装该库。

cd ${your zookeeper home dir}/src/c/
./configure
make
sudo make install

添加 zookeeper.so 到你的php.ini(/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini)
添加以下这行

extension="/usr/lib/php5/20121212/zookeeper.so"

[](#%E6%8C%89composer%E8%A7%84%E8%8C%83%E4%BD%BF%E7%94%A8dubbo-php-client)按Composer规范使用dubbo-php-client

composer require -vvv "quickj/dubbo-php-client:dev-master"

[](#%E8%B0%83%E7%94%A8%E6%A0%B7%E4%BE%8B-%E7%9B%B4%E6%8E%A5%E7%B1%BB%E8%B0%83%E7%94%A8)调用样例-直接类调用:

use DubboPhp\Client\Client;
$options = [
'registry_address' => '127.0.0.1:2181',
'version' => '1.0.0',
'group' =>null,
'protocol' => 'jsonrpc'
];
try {
$dubboCli = new Client($options);
$testService = $dubboCli->getService("com.dubbo.demo.HelloService");
$ret = $testService->hello("dubbo php client");
var_dump($ret);
$mapRet = $testService->mapEcho();
var_dump($mapRet);
$objectRet = $testService->objectEcho();
var_dump($objectRet);
/**
* getService method support 2 way. If the forceVgp = true, It will assign the function parameter to service version,group and protocol. Default way is assign the $options configs to these.
* getService支持两种方式调用。如果forceVgp=true, 该方法将使用传参来绑定服务的版本号,组和协议。默认方式是使用$options数组里的配置绑定。
*/
$testServiceWithvgp = $dubboCli->getService("com.dubbo.demo.HelloService","1.0.0",null, $forceVgp = true);
$vgpRet = $testServiceWithvgp->hello("this request from vgp");
var_dump($vgpRet);
} catch (\DubboPhp\ClientDubboPhpException $e) {
print($e->getMessage());
}

[](#laravel%E7%BB%84%E4%BB%B6%E6%A8%A1%E5%BC%8F%E5%AE%89%E8%A3%85)Laravel组件模式安装

config/app.php的

providers数组中增加:

DubboPhp\ClientDubboPhpClientServiceProvider::class

aliases别名数组中增加:

'DubboPhpClient'=>DubboPhp\Client\FacadesDubboPhpClient::class,
'DubboPhpClientFactory'=>DubboPhp\Client\FacadesDubboPhpClientFactory::class,

然后命令行发布一下系统基本配置文件dubbo_cli.php到config路径:

php artisan vendor:publish --provider="DubboPhp\Client\DubboPhpClientServiceProvider"

基本安装配置完成,相关的配置在config('dubbo_cli.default')中设置,具体参考配置文件

[](#laravel%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8)Laravel中的使用:

[](#%E5%8D%95%E5%AE%9E%E4%BE%8B%E6%96%B9%E5%BC%8F%E9%85%8D%E7%BD%AE%E8%AF%BB%E5%8F%96configdubbo_clidefault)单实例方式(配置读取config('dubbo_cli.default')):

$testService = DubboPhpClient::getService('com.dubbo.demo.HelloService');
$ret = $testService->hello("dubbo php client");
var_dump($ret);

[](#%E5%A4%9A%E5%AE%9E%E4%BE%8B%E7%9A%84%E6%96%B9%E5%BC%8F%E9%85%8D%E7%BD%AE%E8%AF%BB%E5%8F%96configdubbo_cliconnectionsxxx)多实例的方式(配置读取config('dubbo_cli.connections.xxx')):

$clientA = DubboPhpClientFactory::factory(config('dubbo_cli.connections.xxxA'));
$testServiceA = $clientA->getService('com.dubbo.demo.HelloService');
$retA = $testServiceA->hello("dubbo php client");
var_dump($retA);
$clientB = DubboPhpClientFactory::factory(config('dubbo_cli.connections.xxxB'));
$testServiceB = $clientB->getService('com.dubbo.demo.HelloService');
$retB = $testServiceB->hello("dubbo php client");
var_dump($retB);


Original url: Access
Created at: 2019-01-21 09:01:24
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论