基於workerman-jsonrpc二次封裝的一個package

streetlamp發表於2021-12-24

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 協議》,轉載必須註明作者和本文連結

相關文章