<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 5.7 RPC RPC(Remote Procedure Call)即遠程過程調用,是指網絡計算機之間相互調用過程函數,而不需要關心底層的網絡通信。MSF的RPC 目前是基于Http協議,當然使用者不需要關心,因為后續有可能會有調整。 MSF實現的RPC具體的基本原則是: 1. 任何類可導出并提供服務 2. RPC Client與RPC Server的類名與方法名一致 3. 任何服務可以很方便的導出自己的類與類方法 ## 服務配置 ```php <?php /** * RPC服務配置 * * @author camera360_server@camera360.com * @copyright Chengdu pinguo Technology Co.,Ltd. */ $config['service']['demo']['host'] = 'http://127.0.0.1:8000'; $config['service']['demo']['timeout'] = 2000; return $config; ``` 示例配置代碼: [https://github.com/pinguo/php-msf-demo/config/docker/rpc.php](https://github.com/pinguo/php-msf-demo/blob/master/config/docker/rpc.php) ## 導出服務 ```php <?php /** * RPC示例Handler */ namespace App\Models\Handlers; use PG\MSF\Models\Model; class Sum extends Model { public $a; public function __construct($a = 0) { $this->a = $a; } /** * 求和 * * @param array ...$args * @return float|int */ public function multi(...$args) { return array_sum($args); } } ``` 示例配置代碼: [https://github.com/pinguo/php-msf-demo/app/Models/Handlers/Sum.php](https://github.com/pinguo/php-msf-demo/blob/master/app/Models/Handlers/Sum.php) ## 調用服務 ```php <?php /** * RPC示例控制器 * * @author camera360_server@camera360.com * @copyright Chengdu pinguo Technology Co.,Ltd. */ namespace App\Controllers; use PG\MSF\Controllers\Controller; use PG\MSF\Client\RpcClient; class RpcTest extends Controller { public function actionGetSum() { /** * @var RpcClient $client */ $client = $this->getObject(RpcClient::class, ['demo']); $sum = yield $client->handler('sum')->multi(1, 2, 3, 4, 5); $this->outputJson($sum); } } ``` `$this->getObject(RpcClient::class, ['demo']);`注意第二個參數表示調用哪一個服務,和配置相對應。 ## 并行調用服務 ```php <?php /** * RPC示例控制器 * * @author camera360_server@camera360.com * @copyright Chengdu pinguo Technology Co.,Ltd. */ namespace App\Controllers; use PG\MSF\Controllers\Controller; use PG\MSF\Client\RpcClient; class RpcTest extends Controller { public function actionConcurrentSum() { $rpc[] = $this->getObject(RpcClient::class, ['demo'])->handler('sum')->func('multi', 1, 2, 3, 4, 5); $rpc[] = $this->getObject(RpcClient::class, ['demo'])->handler('sum')->func('multi', 1, 2, 3, 4); $rpc[] = $this->getObject(RpcClient::class, ['demo'])->handler('sum')->func('multi', 1, 2, 3); $rpc[] = $this->getObject(RpcClient::class, ['demo'])->handler('sum')->func('multi', 1, 2); $sum = yield RpcClient::goConcurrent($rpc); $this->outputJson($sum); } } ``` `RpcClient::goConcurrent($rpc);`可以并行發送RPC請求,然后依次獲取結果。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看