婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現創建一個RPC服務操作示例

PHP實現創建一個RPC服務操作示例

熱門標簽:揚州地圖標注app 騰訊外呼管理系統 青島語音外呼系統招商 岳陽外呼型呼叫中心系統在哪里 山西探意電話機器人 河南電銷卡外呼系統哪家強 百應電話機器人服務 山西回撥外呼系統 昭通辦理400電話

本文實例講述了PHP實現創建一個RPC服務操作。分享給大家供大家參考,具體如下:

RPC全稱為Remote Procedure Call,翻譯過來為"遠程過程調用"。主要應用于不同的系統之間的遠程通信和相互調用。

比如有兩個系統,一個是PHP寫的,一個是JAVA寫的,而PHP想要調用JAVA中的某個類的某個方法,這時候就需要用到RPC了。

怎么調?直接調是不可能,只能是PHP通過某種自定義協議請求JAVA的服務,JAVA解析該協議,在本地實例化類并調用方法,然后把結果返回給PHP。

這里我們用PHP的socket擴展來創建一個服務端和客戶端,演示調用過程。

RpcServer.php代碼如下:

?php
class RpcServer {
  protected $serv = null;

  public function __construct($host, $port, $path) {
    //創建一個tcp socket服務
    $this->serv = stream_socket_server("tcp://{$host}:{$port}", $errno, $errstr);
    if (!$this->serv) {
      exit("{$errno} : {$errstr} \n");
    }
    //判斷我們的RPC服務目錄是否存在
    $realPath = realpath(__DIR__ . $path);
    if ($realPath === false || !file_exists($realPath)) {
      exit("{$path} error \n");
    }

    while (true) {
      $client = stream_socket_accept($this->serv);

      if ($client) {
        //這里為了簡單,我們一次性讀取
        $buf = fread($client, 2048);
        //解析客戶端發送過來的協議
        $classRet = preg_match('/Rpc-Class:\s(.*);\r\n/i', $buf, $class);
        $methodRet = preg_match('/Rpc-Method:\s(.*);\r\n/i', $buf, $method);
        $paramsRet = preg_match('/Rpc-Params:\s(.*);\r\n/i', $buf, $params);
        
        if($classRet  $methodRet) {
          $class = ucfirst($class[1]);
          $file = $realPath . '/' . $class . '.php';
          //判斷文件是否存在,如果有,則引入文件
          if(file_exists($file)) {
            require_once $file;
            //實例化類,并調用客戶端指定的方法
            $obj = new $class();
            //如果有參數,則傳入指定參數
            if(!$paramsRet) {
              $data = $obj->$method[1]();
            } else {
              $data = $obj->$method[1](json_decode($params[1], true));
            }
            //把運行后的結果返回給客戶端
            fwrite($client, $data);
          }
        } else {
          fwrite($client, 'class or method error');
        }
        //關閉客戶端
        fclose($client);
      }
    }
  }

  public function __destruct() {
    fclose($this->serv);
  }
}

new RpcServer('127.0.0.1', 8888, './service');

RpcClient.php代碼如下:

?php

class RpcClient {
  protected $urlInfo = array();
  
  public function __construct($url) {
    //解析URL
    $this->urlInfo = parse_url($url);
    if(!$this->urlInfo) {
      exit("{$url} error \n");
    }
  }
  
  public function __call($method, $params) {
    //創建一個客戶端
    $client = stream_socket_client("tcp://{$this->urlInfo['host']}:{$this->urlInfo['port']}", $errno, $errstr);
    if (!$client) {
      exit("{$errno} : {$errstr} \n");
    }
    //傳遞調用的類名
    $class = basename($this->urlInfo['path']);
    $proto = "Rpc-Class: {$class};" . PHP_EOL;
    //傳遞調用的方法名
    $proto .= "Rpc-Method: {$method};" . PHP_EOL;
    //傳遞方法的參數
    $params = json_encode($params);
    $proto .= "Rpc-Params: {$params};" . PHP_EOL;
    //向服務端發送我們自定義的協議數據
    fwrite($client, $proto);
    //讀取服務端傳來的數據
    $data = fread($client, 2048);
    //關閉客戶端
    fclose($client);
    return $data;
  }
}

$cli = new RpcClient('http://127.0.0.1:8888/test');
echo $cli->hehe();
echo $cli->hehe2(array('name' => 'test', 'age' => 27));

然后分別運行上面兩個腳本(注意,php要添加環境變量)

> php RpcServer.php
> php RpcClient.php

結果如下:

Test.php代碼如下:

?php
class Test {
  public function hehe() {
    return 'hehe';
  }
  public function hehe2($params) {
    return json_encode($params);
  }
}

目錄結構如下:

上面我們自定義的協議,可以隨意修改,只要是客戶端和服務端兩邊能夠統一并能解析。

客戶端通過請求服務端,把要調用的類,方法和參數傳遞給服務端,服務端去通過實例化調用方法返回結果。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php socket用法總結》、《php字符串(string)用法總結》、《PHP數學運算技巧總結》、《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP數據結構與算法教程》、《php程序設計算法總結》及《PHP網絡編程技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP遠程調用以及RPC框架
  • php實現的一個簡單json rpc框架實例
  • ThinkPHP內置jsonRPC的缺陷分析
  • PHP采用XML-RPC構造Web Service實例教程
  • 使用PHPRPC實現Ajax安全登錄
  • php中關于codeigniter的xmlrpc的類在進行數據交換時的類型問題
  • AMFPHP php遠程調用(RPC, Remote Procedure Call)工具 快速入門教程
  • php xml-rpc遠程調用
  • 詳解php中流行的rpc框架

標簽:婁底 鎮江 寶雞 宜賓 湛江 銅川 黃南 南陽

巨人網絡通訊聲明:本文標題《PHP實現創建一個RPC服務操作示例》,本文關鍵詞  PHP,實現,創建,一個,RPC,服務,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現創建一個RPC服務操作示例》相關的同類信息!
  • 本頁收集關于PHP實現創建一個RPC服務操作示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品天干天干在观线| 青青草伊人久久| aaa亚洲精品一二三区| 日本精品一区二区三区高清| 久久综合狠狠综合久久综合88| 亚洲妇熟xx妇色黄| 欧美性xxxxx极品少妇| 亚洲国产成人av网| 一区二区三区av电影| 国产精品欧美一区喷水| 99在线精品免费| 99久久精品免费看国产 | 国产精品卡一卡二卡三| 亚洲免费观看高清完整| 久久精品国产精品亚洲红杏| 久久综合久色欧美综合狠狠| 亚洲成a人片在线观看中文| av一区二区不卡| 成人免费va视频| 亚洲男帅同性gay1069| 99精品视频在线播放观看| 亚洲一区二区欧美| 欧美一区二区三区四区五区| 久久国产精品区| 久久久精品影视| av中文字幕在线不卡| 亚洲国产成人精品视频| 欧美一区二区三级| 成人av电影在线| 石原莉奈在线亚洲三区| 中文字幕久久午夜不卡| 91美女片黄在线| 日本一区二区三区免费乱视频| 青娱乐精品视频| 在线观看一区不卡| 亚洲国产精品精华液2区45| 美国十次综合导航| 精品理论电影在线| 一区二区三区中文字幕精品精品| 日本视频免费一区| 亚洲一区二区三区美女| 国产精品电影一区二区三区| 色哟哟日韩精品| 国产成人在线色| 亚洲成人三级小说| 欧美高清在线一区| 精品国内片67194| 欧洲av一区二区嗯嗯嗯啊| 国产一区二区三区免费在线观看| 亚洲女与黑人做爰| 国产精品色一区二区三区| 欧美精品国产精品| 国产精品综合av一区二区国产馆| 亚洲成在线观看| 亚洲桃色在线一区| 中文字幕一区二区三区不卡在线 | 久久久99精品久久| 91丨porny丨户外露出| 国产在线不卡一区| 久久99精品网久久| 日韩精品电影在线| 亚洲gay无套男同| 成人欧美一区二区三区在线播放| 久久久久88色偷偷免费| 欧美在线一区二区三区| av一区二区久久| 91免费看`日韩一区二区| 成人午夜视频免费看| 国产成人午夜精品影院观看视频| 久久精品久久99精品久久| 日本不卡不码高清免费观看| av动漫一区二区| caoporm超碰国产精品| 91色视频在线| 一本一道综合狠狠老| 色综合久久中文字幕| 色噜噜狠狠成人中文综合| 成人黄色小视频在线观看| 国产999精品久久久久久绿帽| 亚洲动漫第一页| 中文字幕一区二| 国产精品久久久久三级| 日韩伦理av电影| 精品噜噜噜噜久久久久久久久试看| 欧美日韩精品久久久| 欧美精品vⅰdeose4hd| 欧美一区二区三区在线看| 日韩精品影音先锋| 日韩精品一区二区三区中文精品| 精品国产乱码久久久久久久久| 精品欧美黑人一区二区三区| 国产调教视频一区| 中文字幕日本不卡| 亚洲成人av一区| 日本人妖一区二区| 亚洲午夜三级在线| 亚洲成人动漫一区| 性欧美疯狂xxxxbbbb| 免费人成在线不卡| 丁香六月久久综合狠狠色| www.色精品| 久久众筹精品私拍模特| 国产精品夫妻自拍| 亚洲欧美区自拍先锋| 精品制服美女丁香| 欧美不卡视频一区| 亚洲bt欧美bt精品| 久久超碰97人人做人人爱| av中文字幕一区| 久久综合色之久久综合| 一本高清dvd不卡在线观看| gogo大胆日本视频一区| 亚洲成人免费观看| 波多野结衣一区二区三区| 久久综合九色综合欧美亚洲| 色网站国产精品| 精品日韩一区二区三区免费视频| 亚洲一区在线看| 精品一区二区在线视频| 欧美日韩一区二区三区四区五区 | 一区二区三区中文字幕| 麻豆精品一区二区三区| 国产精品白丝av| 欧美日本在线看| 国产精品卡一卡二| 欧美日韩免费不卡视频一区二区三区| 中文字幕av一区二区三区免费看| 麻豆精品国产91久久久久久| 精品国免费一区二区三区| 99久久国产综合精品女不卡| 日韩一区和二区| 久久99精品国产麻豆婷婷| 欧美激情综合五月色丁香| 91麻豆swag| 91色九色蝌蚪| 一区二区不卡在线视频 午夜欧美不卡在| 2014亚洲片线观看视频免费| 亚洲精品国产无天堂网2021| 国产大陆精品国产| 日韩欧美亚洲一区二区| 亚洲一区欧美一区| 日本精品免费观看高清观看| 亚洲欧美一区二区视频| 国产成人av电影在线| 久久综合色之久久综合| 国内精品国产成人国产三级粉色| 91超碰这里只有精品国产| 成人欧美一区二区三区视频网页| 亚洲国产精品一区二区尤物区| 色菇凉天天综合网| 一区二区欧美视频| 在线不卡一区二区| 91蜜桃网址入口| 欧美xxxxx裸体时装秀| 亚洲日本青草视频在线怡红院| 在线观看亚洲精品| 国产成人在线看| 久久精品一区四区| 91看片淫黄大片一级在线观看| 美国毛片一区二区| 一区二区三区成人| 日本一区二区免费在线观看视频 | 国产激情91久久精品导航| 日本在线不卡视频一二三区| 成人h版在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 处破女av一区二区| 午夜精品123| 日本一道高清亚洲日美韩| 九九九久久久精品| 国产在线不卡一卡二卡三卡四卡| 在线欧美小视频| 国产一区二区三区在线观看免费 | 国产.欧美.日韩| 天堂精品中文字幕在线| 裸体一区二区三区| 国产乱淫av一区二区三区| 一区二区免费看| 亚洲欧美一区二区三区国产精品| 欧美激情中文不卡| 国产伦精品一区二区三区在线观看| 日韩欧美国产精品一区| 精品国产乱码久久| 蜜桃久久久久久久| 久久综合av免费| 欧美日韩国产中文| 九九九精品视频| 国产欧美一区二区精品性| 欧美性感一类影片在线播放| 久久99热99| 亚洲妇女屁股眼交7| 国产亚洲成年网址在线观看| eeuss鲁片一区二区三区| 日韩va亚洲va欧美va久久| 中文一区一区三区高中清不卡| 欧美日韩你懂的| 成av人片一区二区| 午夜精品在线看| 国产精品污www在线观看| 91精品在线免费观看|