think-workerman-jsonrpc是基於workerman-jsonrpc二次封裝的一個package。裡面有rpc客戶端,rpc服務端和rpc呼叫監控服務系統
通過 composer
composer require streetlamp/think-workerman-jsonrpc
需要在linux環境下啟動
服務
在專案根目錄新建server.php啟動檔案
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
new \streetlamp\rpcServer\RpcServer();
服務配置說明
服務配置檔案為/src/server_config.php,內容如下:
<?php
return [
//服務端配置
'rpc_server' => [
//worker程式數
'processes' => 1,
//通訊協議
'protocol' => '\streetlamp\rpcServer\JsonNL',
//地址
'host' => '0.0.0.0',
//埠
'port' => 2015,
'socket' => '',
//統計資料的協議地址
'statistic_address' => 'udp://127.0.0.1:9200',
//服務程式名
'worker_name' => 'vitec',
//日誌路徑
'log_file' => RUNTIME_PATH . 'workerman/log.log',
//服務
'service' => [
'User' => \app\test\logic\User::class
]
]
];
例項化new \streetlamp\rpcServer\RpcServer()物件時可以傳入自定義的配置檔案絕對路徑,或者直接傳入一個陣列。
一、傳入絕對路徑
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
new \streetlamp\rpcServer\RpcServer("/var/www/html/application/config.php");
二、傳入陣列
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
$config = [
'rpc_server' => [
'processes' => 1,
'protocol' => '\streetlamp\rpcServer\JsonNL',
'host' => '0.0.0.0',
'port' => 2015,
'socket' => '',
'statistic_address' => 'udp://127.0.0.1:9200',
'worker_name' => 'vitec',
'log_file' => RUNTIME_PATH . 'workerman/log.log',
'service' => ['User' => \app\test\logic\User::class]
]
];
new \streetlamp\rpcServer\RpcServer($config);
命令說明
一、守護程式啟動
php server.php start -d
二、重啟啟動
php server.php restart
三、平滑重啟/重新載入配置
php server.php reload
四、檢視服務狀態
php server.php status
五、停止
php server.php stop
thinkPHP5.0框架使用例子
新增啟動服務檔案server.php,在專案根目錄
#!/usr/bin/env php
<?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE', 'rpc/RpcServer');
// 載入框架引導檔案
require __DIR__ . '/thinkphp/start.php';
新增服務類
<?php
namespace app\rpc\controller;
class RpcServer extends \streetlamp\rpcServer\RpcServer
{
}
然後直接執行php server.php start則可開啟服務。
客戶端同步呼叫
<?php
// User對應服務端配置中service裡面的對映類,$config為配置檔案的絕對路徑或陣列
$config = 'client_config.php';
$user_client = streetlamp\rpcClient\RpcClient::instance('User',$config);
// getInfoByUid對應User類中的getInfoByUid方法
$ret_sync = $user_client->getInfoByUid($uid);
客戶端非同步呼叫
呼叫的方法新增”asend_”字首,接收資料時新增”arecv_”字首。
<?php
// User對應服務端配置中service裡面的對映類,$config為配置檔案的絕對路徑或陣列
$config = 'client_config.php';
$user_client = streetlamp\rpcClient\RpcClient::instance('User',$config);
// getInfoByUid對應User類中的getInfoByUid方法
//非同步呼叫User::getInfoByUid方法
user_client = $user_client->asend_getInfoByUid($uid);
這裡是其它的業務程式碼
....................
....................
// 需要資料的時候非同步接收資料
$ret_async2 = $user_client->arecv_getInfoByUid($uid);
客戶端配置說明
客戶端配置檔案為/src/client_config.php,內容如下:
<?php
//客戶端配置
return [
//驅動方式
'type' => 'workerman',
//服務端連線池
'rpc_server_address' => [ 'tcp://127.0.0.1:2015' ],
//重連次數
'reconnect_count' => 1
];
$user_client = streetlamp\rpcClient\RpcClient::instance(‘User’,$config);$config可以傳入自定義的配置檔案絕對路徑,或者直接傳入一個陣列。
一、傳入絕對路徑
<?php
$user_client = streetlamp\rpcClient\RpcClient::instance('User',"/var/www/html/application/config.php");
二、傳入陣列
<?php
$user_client = streetlamp\rpcClient\RpcClient::instance(
'User',
[
'type' => 'workerman',
'rpc_server_address' => ['tcp://127.0.0.1:2015'],
'reconnect_count' => 1
]
);
需要在linux環境下啟動
服務
在專案根目錄新建statistic.php啟動檔案
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
new \streetlamp\Statistics\StatisticsServer();
統計服務端配置說明
統計服務端配置檔案為/src/statistics_server_config.php,內容如下:
<?php
//統計服務端配置
return [
//web頁面埠
'web_port' => 55757,
//接收統計資料埠
'statistics_port' => 9200,
//web頁面域名配置
'host' => ''
];
例項化new \streetlamp\Statistics\StatisticsServer();物件時可以傳入自定義的配置檔案絕對路徑,或者直接傳入一個陣列。
一、傳入絕對路徑
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
new \streetlamp\Statistics\StatisticsServer("/var/www/html/application/config.php");
二、傳入陣列
#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';
$config = [
//web頁面埠
'web_port' => 55757,
//接收統計資料埠
'statistics_port' => 9200,
//web頁面域名配置
'host' => ''
];
new \streetlamp\Statistics\StatisticsServer($config);
命令說明
一、守護程式啟動
php statistic.php start -d
二、重啟啟動
php statistic.php restart
三、平滑重啟/重新載入配置
php statistic.php reload
四、檢視服務狀態
php statistic.php status
五、停止
php statistic.php stop
統計監控頁面
訪問地址:http://ip:55757(埠為配置檔案中的web頁面埠)
本作品採用《CC 協議》,轉載必須註明作者和本文連結