您好,登錄后才能下訂單哦!
這篇文章主要介紹了Laravel Hprose RPC服務的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Laravel Hprose RPC 服務
開源地址:https://github.com/flc1125/laravel-hprose
該項目支持 Laravel 及非 Laravel 項目使用,支持 php >= 5.3
版本語法
注: 以下內容,默認你對 Hprose 已經有了一定了解。內容基于 Laravel 項目介紹。
環境依賴 C 擴展 hprose
,詳見:Hprose 官網、Hprose Pecl 擴展
服務端安裝即可,客戶端可不安裝
pecl install hprose
安裝擴展包
composer require flc/laravel-hprose
Laravel >= 5.5
已增加包自動發現。舊版本,請手動設置
在 config/app.php
文件下加入服務提供者
'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
執行完成后,會分別生成以下文件:
路由服務提供者:app/Providers/HproseRouteServiceProvider.php
路由文件:routes/hprose.php
(該路由文件非 Laravel 路由,下文簡稱 Hprose 路由
)
Hprose 路由控制器根目錄默認在:app/Http/Controllers/Hprose
目錄下,可自行在app/Providers/HproseRouteServiceProvider.php
調整
在 config/app.php
文件下加入默認的 Hprose 路由服務提供者
'providers' => [ ... app\Providers\HproseRouteServiceProvider::class, ]
php artisan vendor:publish --provider="Flc\Laravel\Hprose\HproseServiceProvider"
執行后,會生成配置文件路徑:/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', // 此處為服務端的連接地址 'async' => false, ), ), ] ];
目前版本,除客戶端配置中的遠程服務器地址外,其他配置默認即可
其他均為后續支持swoole-http
、tcp
、websocket
等,做提前架設
增加一個 Laravel 路由,用于啟動 Http 服務,如:
<?php Route::any('hprose-server', 'HproseController@server');
對應控制器:
<?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); } }
服務端
<?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);
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Laravel Hprose RPC服務的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。