当前位置: 首页 > 知识库问答 >
问题:

如何使用gRPC从PHP和Windows 10与"grpc_php_plugin"?

秦鸿羽
2023-03-14

在尝试将Windows中的gRPC与PHP一起使用时,我可以找到“protoc.exe”和“PHP\u gRPC.dll”的Windows二进制文件,但我找不到任何“gRPC\u PHP\u插件”(exe或dll?)因此,没有成功地从Windows/PHP使用gRPC。

文档页:

https://grpc.io/docs/quickstart/php/

上述paqe中的当前文档是面向unix的(带有标记中的“make grpc\u php\u plugin”和“bin/opt”路径,例如--plugin=protoc gen grpc=bin/opt/grpc\u php\u plugin)。

然而,似乎应该支持视窗系统,因为页面确实提到了“在视窗系统上安装您可以从PECL网站下载预编译的grpc.dll扩展”

另一方面,如果所需的三个二进制文件中只有两个可用,那么这还不够,因为据我所知,需要以下三个二进制文件:

  • “protoc.exe”(在“protoc-3.11.4-win64.zip”中确实可用)

尝试在“快速启动”页面上使用该示例时,您会发现以下示例命令:

protoc --proto_path=examples/protos --php_out=examples/php --grpc_out=examples/php --plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin ./examples/protos/helloworld.proto

问题是插件标志“-plugin=protoc gen grpc=bin/opt/grpc\u php\u plugin”。

使用Windows时,您没有使用“make grpc\u php\u plugin”进行编译,但需要为Windows下载一个二进制文件,并将其放在Windows路径中,而不是“bin/opt/grpc\u php\u plugin”。

因此,如果有人实际上已经能够在Windows 10中使用gRPC for PHP,那么请解释使其适用于似乎需要但不可用的“grpc_php_plugin”。

共有2个答案

谭兴学
2023-03-14
  1. 下载并安装http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20200602.exe
  2. 打开已安装的Msys2
  3. 更新软件包:pacman-Su
  4. 安装grpc插件:pacman-S mingw-w64-x86\U 64-grpc
  5. 您的插件位于此处:C:\msys64\mingw64\bin
  1. 你可以下载http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-grpc-1.29.1-1-any.pkg.tar.zst

龚彬
2023-03-14

以下是grpc_php_plugin.exe和其他一些人:https://github.com/aaapi-net/protoc-windows-gen-plugins

只需下载并使用以下命令:

protoc -I proto/ --php_out=proto --grpc_out=proto
--plugin=protoc-gen-grpc=./grpc_php_plugin.exe example.proto
 类似资料:
  • 问题内容: 我有一个带有MySQL的远程数据库,并且将我的应用程序用户的照片存储在数据库中,作为LONGTEXT类型的数据库的一行。 我使用Base64将照片转换为字符串。 我使用JSON和PHP连接到远程数据库,因此,我必须使用Base64,因为据我所知,JSON和PHP需要在参数上发送字符串,而使用Base64可以将照片转换为字符串。 可以,但是非常慢。当我加载100 KB的照片时,会花费很多

  • 我正在将服务配置为使用SSL证书。我读过这篇文章: 如何为gRPC启用服务器端SSL? 我猜这是主要代码: 问题是,在我的例子中,我没有以这种方式启动服务,我使用的是kestrel,代码是这样的: 在这种情况下,我无法访问SslCredentials,因此我无法创建一个新的。 如何使用kestrel配置我的ssl证书? 谢谢。

  • 我想从React客户端向服务器发送文件。我知道为此,我应该使用grpc流媒体并将文件分割成块。所以,问题是如何将这些块发送到服务器?

  • 问题内容: 我看过很多有关使用PHP中的Java的教程,但它们似乎彼此冲突。他们中的许多人说将php.ini更改为使用dll文件,但是显然现在PHP 5中具有“内置”功能。但这需要Tomcat吗?我必须摆脱Apache才能运行它吗?http://php-java- bridge.sourceforge.net/pjb/installation.php 表示将.war文件放入Tomcat的autod

  • 问题内容: 我在使用Ajax和php时遇到麻烦。我正在尝试做的是调用ajax函数,该函数从表单的输入中获取值,并检查数据库中是否存在该电子邮件。这是我当前的javascript: 不幸的是,我无法戒备。在我的PHP函数中,它检查输入的是用户名还是电子邮件(仅出于我的目的,所以您知道),然后在任一列中查找它。如果找到它,则返回true,否则返回false: 所以我的问题是,ajax如何响应这些返回值

  • 问题内容: 我的问题很基本。 我没有找到任何例子来满足我的需求,究竟和平均在PHP?他们只是给出一个示例- 序列化数组并以无法解释的格式显示输出。很难理解其术语所经过的基本概念。 编辑: 输出: 我不明白第二个输出。除此之外,有人可以举例说明在使用它之前我需要序列化php数组的情况吗? 问题答案: 一个PHP数组或对象或其他 复杂的数据结构 不能在 运行的PHP脚本 外传输或存储或以其他方式使用。