IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php-Grpc -> 正文阅读

[PHP知识库]php-Grpc

1. protoc 生成php代码命令?

1. 首先在 demo2 文件夹下创建 helloGo文件夹,可自定义

2. 使用生成命令
    protoc --php_out=./helloPhp ./hello.proto
    此时查看文件夹下是否多了此类文件
        demo2\helloPhp\GPBMetadata\Hello.php
        demo2\helloPhp\Hello\Requests.php
        demo2\helloPhp\Hello\Responses.php

2. composer安装所需组件?

1. demo2下创建 composer.json 内容如下  demo2\helloPhp\composer.json

{
    "name": "grpc/go-php-test",
    "require": {
      "grpc/grpc": "^v1.3.0",
      "google/protobuf": "^v3.3.0" 
    },
    "autoload":{
      "psr-4":{
        "GPBMetadata\\":"GPBMetadata/", 
        "Hello\\":"Hello/"   
      }
    }
}

2. 运行 composer install 生成 vendor 和 composer.lock

    demo2\helloPhp\vendor\autoload.php
    demo2\helloPhp\composer.lock

3. 创建 demo2/php_server/serve.php

composer install
<?php

require_once __DIR__ . '../../helloPhp/vendor/autoload.php';

/**
 * 创建 client 类 实现客户端
 */
class HelloClient extends \Grpc\BaseStub{

    public function __construct($hostname, $opts, $channel = null) {
        parent::__construct($hostname, $opts, $channel);
    }

    /**
     * rpc Run(Requests) returns (Responses) {}
     * 用于请求和响应该服务
     * @param Requests ... 
     * @param metadata ...
     * @param options ...
     */
    public function Run(\Hello\Requests $Requests, $metadata=[], $options=[]) {
        // (/Hello.Hello/Run) 是请求服务端那个服务和方法,基本和 proto 文件定义一样
        // (\Hello\Responses) 是服务端响应信息
        return $this->_simpleRequest('/hello.Hello/Run',
            $Requests,
            ['\Hello\Responses', 'decode'],
            $metadata, $options);
    }

    public function getMessage() {
        return $this->message;
    }

}


// 客户端监听端口 
$client = new HelloClient('127.0.0.1:1234', [
    'credentials' => Grpc\ChannelCredentials::createInsecure()
]);

//实例化 Requests 数据类 ,rpc Run(Requests) 类的入参
$request = new \Hello\Requests();
$request->setName("小Q");

/**
 * @param result 响应对象 (Hello\Responses)
 * @param status ...
 */
list($result, $status) = $client->Run($request)->wait();


echo $result->getMessage();

4. 运行 serve.php, 服务端接收 "小Q",服务端返回 "hello小Q"

php demo2\php_server\serve.php

5. 出现此类报错 请安装 php_grpc扩展

Fatal error: Uncaught Error: Class 'Grpc\ChannelCredentials' not found

.https://pecl.php.net/package/gRPChttps://pecl.php.net/package/gRPC

6. 再次运行第4步

7.?success

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:31:11  更:2021-11-11 12:31:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:49:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码