【问题标题】:Laravel 5.7 gRPC IntegrationLaravel 5.7 gRPC 集成
【发布时间】:2019-01-03 05:05:00
【问题描述】:

我在核心 PHP 中设置了 gRPC,它工作正常,但我想在 laravel 5.7 中使用它。我已经使用composer.json 下载了 gRPC。现在我不知道在其中使用 gRPC 需要做什么。

我在 composer.json 文件中添加了以下内容

"require": {
        "datto/protobuf-php": "dev-master",
        "grpc/grpc": "^1.15.0"
    },
"repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/stanley-cheung/Protobuf-PHP"
        }
    ]

但现在我没有得到下一步该做什么。所以任何人都知道然后请让我知道。我有我的 gRPC(核心库示例)的核心 PHP 代码,我已经从这个 web url 设置了这些代码。 gRPC in PHP。所以我只想融入laravel。

【问题讨论】:

    标签: php laravel-5 grpc


    【解决方案1】:

    如何在 Laravel (5.7) 中使用 protoc 生成的文件

    • 像往常一样准备描述服务的 .proto 文件
    • 设置为包名package app.grpc;
    • 运行生成命令:protoc --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/your/path/to/grpc_php_plugin yourfile.proto
    • 现在将 App/Grpc 复制到 laravel App 中
    • 将 GPBMetadata 文件夹复制为 laravel 根目录下的新文件夹
    • 在自动加载类映射部分更改composer.json 文件插入GPBMetadata 位置(见下文
    • 运行命令composer dump-autoload
    • 现在您可以在任何控制器中使用您生成的类,记得在顶部添加use App\Grpc\YourClassName

    如果有人对此有更好的解决方案,请告诉我

    composer.json的相关部分:

    ...
        "autoload": {
            "classmap": [
                "database/seeds",
                "database/factories",
                "GPBMetadata"
            ],
            "psr-4": {
                "App\\": "app/"
            }
        }
    ...
    

    【讨论】:

    • 什么是“grpc_php_plugin”插件?我按照这里的说明进行操作:grpc.io/docs/quickstart/php 但它总是说:“protoc-gen-php:程序未找到或不可执行--php_out:protoc-gen-php:插件失败,状态码为 1。”
    • @JohnMellor 该插件需要从 proto 文件生成 php 文件。它必须通过这里的步骤单独构建grpc.io/docs/languages/php/quickstart/#php-protoc-plugin 我必须安装以下依赖项(automake、libtool、autoconf、build-essential、shtool)才能构建插件。
    【解决方案2】:

    你不再需要这些了

    "datto/protobuf-php": "dev-master",
    
    "repositories": [
            {
                "type": "vcs",
                "url": "https://github.com/stanley-cheung/Protobuf-PHP"
            }
        ]
    

    您应该将"google/protobuf": "^3.6.1" 添加到您的require

    以此为例:

    https://github.com/grpc/grpc/blob/master/examples/php/composer.json

    版本已过时 - 只需获取最新版本即可。

    【讨论】:

    • 我已将datto/protobuf-php 替换为google/protobuf": "^3.6.1。但是我不知道在 laravel 中配置 gRPC 应该怎么做。
    • 在添加此行 "google/protobuf": "^3.6.1" 后安装依赖项时出现任何错误?
    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 2019-05-21
    • 2020-11-19
    • 2019-07-06
    • 2019-04-15
    • 2019-03-09
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多