您好,登錄后才能下訂單哦!
這篇文章主要介紹了Laravel Hprose RPC服務(wù)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Laravel Hprose RPC 服務(wù)
開源地址:https://github.com/flc1125/laravel-hprose
該項目支持 Laravel 及非 Laravel 項目使用,支持 php >= 5.3
版本語法
注: 以下內(nèi)容,默認(rèn)你對 Hprose 已經(jīng)有了一定了解。內(nèi)容基于 Laravel 項目介紹。
環(huán)境依賴 C 擴展 hprose
,詳見:Hprose 官網(wǎng)、Hprose Pecl 擴展
服務(wù)端安裝即可,客戶端可不安裝
pecl install hprose
安裝擴展包
composer require flc/laravel-hprose
Laravel >= 5.5
已增加包自動發(fā)現(xiàn)。舊版本,請手動設(shè)置
在 config/app.php
文件下加入服務(wù)提供者
'providers' => [ ... Flc\Laravel\Hprose\HproseServiceProvider::class, ]
在 config/app.php
文件下加入門面
'aliases' => [ ... 'HproseRoute' => Flc\Laravel\Hprose\Facades\HproseRoute::class, 'HproseServer' => Flc\Laravel\Hprose\Facades\HproseServer::class, 'HproseClient' => Flc\Laravel\Hprose\Facades\HproseClient::class, ]
php artisan hprose:generator
執(zhí)行完成后,會分別生成以下文件:
路由服務(wù)提供者:app/Providers/HproseRouteServiceProvider.php
路由文件:routes/hprose.php
(該路由文件非 Laravel 路由,下文簡稱 Hprose 路由
)
Hprose 路由控制器根目錄默認(rèn)在:app/Http/Controllers/Hprose
目錄下,可自行在app/Providers/HproseRouteServiceProvider.php
調(diào)整
在 config/app.php
文件下加入默認(rèn)的 Hprose 路由服務(wù)提供者
'providers' => [ ... app\Providers\HproseRouteServiceProvider::class, ]
php artisan vendor:publish --provider="Flc\Laravel\Hprose\HproseServiceProvider"
執(zhí)行后,會生成配置文件路徑:/config/hprose.php
配置文件路徑:/config/hprose.php
<?php return [ 'server' => [ 'default' => 'http', 'connections' => [ 'http' => [ 'protocol' => 'http', ], ], ], 'client' => [ 'default' => 'http', 'connections' => array( 'http' => array( 'protocol' => 'http', 'uri' => 'http://192.168.2.67:9001/api/server', // 此處為服務(wù)端的連接地址 'async' => false, ), ), ] ];
目前版本,除客戶端配置中的遠程服務(wù)器地址外,其他配置默認(rèn)即可
其他均為后續(xù)支持swoole-http
、tcp
、websocket
等,做提前架設(shè)
增加一個 Laravel 路由,用于啟動 Http 服務(wù),如:
<?php Route::any('hprose-server', 'HproseController@server');
對應(yīng)控制器:
<?php namespace App\Http\Controllers; use HproseServer; use HproseRoute; class HproseController { public function server() { HproseServer::setRouter(HproseRoute::getRouter())->start(); } }
訪問:http://localhost/hprose-server
<?php HproseRoute::add('tests', 'Controller@tests'); HproseRoute::add('tests_one', 'Controller@tests')->option(['...']);
Controller@tests
的方法自行定義
<?php namespace App\Http\Controllers; use HproseClient; class HproseController { public function client() { $result = HproseClient::tests('tests'); $result = HproseClient::connection('other')->tests('tests'); // 其他連接 $result = HproseClient::connection()->tests->one('tests'); print_r($result); } }
服務(wù)端
<?php $router = new \Flc\Laravel\Hprose\Routing\Router; $router->group(['prefix' => 'tests', 'namespace' => 'App\\Controllers'], function ($router) { $router->add('one', 'Controller@one'); $router->add('two', 'Controller@two')->option(['...']); $router->group(['prefix' => 'group'], function ($router) { $router->add('one', 'Controller@group_one'); ... }); }); $app = [ 'config' => [ 'hprose.server.default' => 'http', 'hprose.server.connections' => [ 'http' => [ 'protocol' => 'http', ], ], ], ]; $server = new \Flc\Laravel\Hprose\Server($app); $server->setRouter($router)->start();
客戶端
<?php $app = [ 'config' => [ 'hprose.client.default' => 'http', 'hprose.client.connections' => [ 'http' => [ 'protocol' => 'http', 'uri' => 'http://localhost/server.php', 'async' => false ] ] ] ]; $client = new \Flc\Laravel\Hprose\Client($app); print_r($client->tests->one('222').PHP_EOL);
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Laravel Hprose RPC服務(wù)的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。