基于 hprose/hprose-php 开发的Laravel扩大:whereof/laravel-hprose

装置

composer require whereof/laravel-hprose

配置文件

<?phpreturn [    //rpc 服务    'server' => [        // hprose 调试模式        'debug' => true,        //监听地址        'tcp_uris'       => [            'tcp://0.0.0.0:1314',        ],        //注册rpc 服务 目录地址        'route_path'     => glob(base_path("rpc") . '/*.php'),        // 通过路由查看注册的办法        'http'           => [            // 如果设置false 在控制台显示调用办法,否在在路由显示调用办法            'enable'       => false,            //如果设置了true 这里就是路由前缀            'route_prefix' => 'rpc'        ],    ],    //rpc 客户端    'client' => [        // 服务端监听地址        'tcp_uris' => [            'tcp://127.0.0.1:1314',        ],        //是否异步        'async'    => false    ],];

日志记录 /config/logging.php

'channels' => [     ............     'hprose' => [          'driver' => 'daily',          'path'   => storage_path('logs/hprose.log'),          'days'   => 14,      ],]
非强制配置,不配置,就会走默认的日志记录

laravel配置

//在 `config/app.php` 注册 HproseServiceProvider 'providers' => [    .....    \whereof\laravel\hprose\HproseServiceProvider::class]php artisan vendor:publish --provider="whereof\laravel\hprose\HproseServiceProvider"

Lumen配置

将配置信息放在/config/hprose.php/bootstrap/app.php$app->register(\whereof\laravel\hprose\HproseServiceProvider::class);/路由注册 rpc/demo.php<?phpuse whereof\laravel\hprose\Facades\HproseRoute;// 注册callbackHproseRoute::add(function () {    return 'service hello';}, 'hello');// 注册classHproseRoute::add(\whereof\laravel\hprose\Services\UserServer::class);//注册中间价HproseRoute::addInvokeHandler(function ($name, array &$args, stdClass $context, Closure $next) {    \whereof\laravel\hprose\Support\LaravelHelper::log('调用的近程函数/办法名:' . $name, 'debug', $args);    $result = $next($name, $args, $context);    return $result;});

服务端 办法注入,类注入以及目录下类注入

<?phpuse whereof\laravel\hprose\Facades\HproseRoute;// 注册callbackHproseRoute::add(function () {    return 'service hello';}, 'hello');// 注册classHproseRoute::add(\whereof\laravel\hprose\Services\UserServer::class);//注册中间价HproseRoute::addInvokeHandler(function ($name, array &$args, stdClass $context, Closure $next) {    \whereof\laravel\hprose\Support\LaravelHelper::log('调用的近程函数/办法名:' . $name, 'debug', $args);    $result = $next($name, $args, $context);    return $result;});// 注册整个目录HproseRoute::addPath(app_path('Services'));
应用addPath的时候要留神:在类中构造方法__construct 参数不能是必传参数.

启动rpc服务

php artisan hprose:socket

客户端调用

$uris =['tcp://127.0.0.1:1314'];$client = new \whereof\laravel\hprose\Clients\SocketClient($uris, false);$client->hello()$client->whereof_hprose_demoService->kan()须要配置配置'client' => [  'tcp_uris' => [      'tcp://127.0.0.1:1314',  ],    'async' => false],app('hprose.socket.client')->hello()