php yar call,php yar扩展在laravel中的使用

Yar是鸟哥开发的轻量级rpc框架,纯 C 语言编写。闲话少叙,开始干活

安装&配置

pecl install msgpack //用于二进制流传输

pecl install yar //安装PHP yar扩展

composer require reprover/laravel-yar -vvv //安装扩展包

php artisan vendor:publish --tag="laravel-yar" //生成配置文件

将根目录下的/vendor/reprover/laravel-yar/config中的三个文件( yar.php:yar 运行时配置 yar-services.php:rpc 服务注册映射表 yar-map.php:mapName 与 接口参数对应表)复制到根目录的config目录下

服务端修改中间件 跳过 csrf 验证

app/Http/Middleware/VerifyCsrfToken.php 中的 except 数组中加上

protected $except = [

'/yar/*',

];

使用

每次访问/yar时会通过 Reprover/LaravelYar/Controllers/ 引导执行 app/Services目录下的服务。客户端可以通过路由地址进行访问:http://127.0.0.1:80/yar/TestServices //解释:默认路由到/app/Services/TestService.php

TestService.php

namespace App\Services;

use Reprover\LaravelYar\YarService;

class TestServices extends YarService

{

public static function test_method($parameters)

{

return $parameters;

}

public function Example()

{

echo 111;

}

}

91be8d117d86?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

客户端

1.配置三个文件 yar.php:yar 运行时配置 yar-services.php:rpc 服务注册映射表 yar-map.php:mapName 与 接口参数对应表)

/config/yar-services.php

/*

* 配置不同的模块对应的服务端基本信息,对应的uri和服务名称

* */

return [

'Example' => [

'path' => 'http://127.0.0.1/yar/', 'services' => [//services数组下分别表示此模块下的服务别名=>服务名。 服务别名可以自定义,在当前服务中使用。服务名对应的是服务方的服务名称。

'TestServices' => 'TestServices',//可以对应很多service

'TestServices1' => 'TestServices1',//可以对应很多service

]

],

'Example2' => [

'path' => 'http://127.0.0.1/.com/yar/', 'services' => [

'TestServices' => 'TestServices',//可以对应很多service

]

],

];

/config/yar-map.php

/*

* 指定使用某个模块的某个服务的某个方法

* */

return [

'get_example' => [

'module' => 'Example',

'service' => 'TestServices',

'method' => 'test_method',

'connect_timeout' => 1000,

'read_timeout' => 5000,

]

];

同步调用

最简易:

use Reprover/LaravelYar/Yar;

$ret = Yar::get_example([123]);

var_dump($ret);

最标准:

$yarClient = new \Reprover\LaravelYar\Yar('get_example');

$ret = $yarClient->call([123]);

异步调用

最简易:

\Reprover\LaravelYar\Yar::asyncCall("get_example",[123],function($ret, $callbackinfo){

var_dump($ret);

});

\Reprover\LaravelYar\Yar::asyncCall("get_example",[456],function($ret, $callbackinfo){

var_dump($ret);

});

\Reprover\LaravelYar\Yar::loop();

最标准:

$yarClient = new \Reprover\LaravelYar\Yar('test_get', true);

$yarClient->setCallback(function($ret, $callbackinfo){

var_dump($ret);

});

$yarClient->call([789]);

$yarClient::loop();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值