摘要:基于開發(fā)的擴展版本要求安裝或者編輯配置在注冊和無需手動注冊配置文件監(jiān)聽地址列表,字符串格式數(shù)組是否啟用方法,開啟關閉,開啟后將自動對外發(fā)布一個遠程調(diào)用方法客戶端可調(diào)用創(chuàng)建配置和路由文件應用根目錄下的目錄下會自動生成新文件
Laravel-hprose
基于 hprose/hprose-php 開發(fā)的Laravel擴展:laravel-hprose
版本要求Laravel>=5.2安裝
composer require "zhuqipeng/laravel-hprose:v1.0-alpha"
或者編輯composer.json
"require": { "zhuqipeng/laravel-hprose": "v1.0-alpha" }配置
在 config/app.php 注冊 ServiceProvider 和 Facade (Laravel 5.5 無需手動注冊)
"providers" => [ // ... ZhuqipengLaravelHproseServiceProvider::class, ]
"aliases" => [ // ... "LaravelHproseMethodManage" => ZhuqipengLaravelHproseFacadesHproseMethodManage::class, ]
配置.env文件
監(jiān)聽地址列表,字符串json格式數(shù)組
HPROSE_URIS=["tcp://0.0.0.0:1314"]
是否啟用demo方法,true開啟 false關閉,開啟后將自動對外發(fā)布一個遠程調(diào)用方法 demo
客戶端可調(diào)用:$client->demo()
HPROSE_DEMO=true // true or false
創(chuàng)建配置和路由文件:
php artisan vendor:publish --provider="ZhuqipengLaravelHproseServiceProvider"
應用根目錄下的config目錄下會自動生成新文件hprose.php使用 路由應用根目錄下的routes目錄下會自動生成新文件rpc.php
和 laravel 路由的用法相似,基于 dingo/api 的路由代碼上做了簡單修改
路由文件
routes/rpc.php
添加路由方法
LaravelHproseRouter::add(string $name, string|callable $action, array $options = []);
string $name 可供客戶端遠程調(diào)用的方法名
string|callable $action 類方法,格式:AppControllersUser@update
array $options 是一個關聯(lián)數(shù)組,它里面包含了一些對該服務函數(shù)的特殊設置,詳情請參考hprose-php官方文檔介紹 鏈接
發(fā)布遠程調(diào)用方法 getUserByName 和 update
LaravelHproseRouter::add("getUserByName", function ($name) { return "name: " . $name; }); LaravelHproseRouter::add("userUpdate", "AppControllersUser@update", ["model" => HproseResultMode::Normal]);
控制器
客戶端調(diào)用
$client->getUserByName("zhuqipeng"); $client->userUpdate("zhuqipeng");路由組
LaravelHproseRouter::group(array $attributes, callable $callback);array $attributes 屬性 ["namespace" => "", "prefix" => ""]
callable $callback 回調(diào)函數(shù)
LaravelHproseRouter::group(["namespace" => "AppControllers"], function ($route) { $route->add("getUserByName", function ($name) { return "name: " . $name; }); $route->add("userUpdate", "User@update"); });客戶端調(diào)用
$client->getUserByName("zhuqipeng"); $client->userUpdate("zhuqipeng");前綴
LaravelHproseRouter::group(["namespace" => "AppControllers", "prefix" => "user"], function ($route) { $route->add("getByName", function ($name) { return "name: " . $name; }); $route->add("update", "User@update"); });客戶端調(diào)用
$client->user->getByName("zhuqipeng"); $client->user->update("zhuqipeng"); // 或者 $client->user_getByName("zhuqipeng"); $client->user_update("zhuqipeng");啟動服務php artisan hprose:socket_server
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/29302.html
摘要:等之所以支持跨語言,是因為他們自己定義了一套結構化數(shù)據(jù)存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協(xié)議。 前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下 這篇是開篇的思路篇 項目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...
摘要:都是分開部署,單獨上線的。序列化畢竟是遠程通信,需要將對象轉化成二進制流進行傳輸。服務化架構的演進架構當業(yè)務規(guī)模很小時,將所有功能都不熟在同一個進程中,通過雙機或者負載均衡器實現(xiàn)負債分流此時,分離前后臺邏輯的架構是關鍵。 showImg(https://segmentfault.com/img/bVbiI2F?w=2250&h=1500); 前言 為什么需要RPC,而不是簡單的HTTP...
閱讀 1792·2023-04-26 01:41
閱讀 3090·2021-11-23 09:51
閱讀 2751·2021-10-09 09:43
閱讀 9074·2021-09-22 15:13
閱讀 2469·2021-09-07 09:59
閱讀 2638·2019-08-30 15:44
閱讀 1145·2019-08-30 12:45
閱讀 2630·2019-08-30 12:43