# grpc-go-to-php-in-windows **Repository Path**: gyhkevin/grpc-go-to-php-in-windows ## Basic Information - **Project Name**: grpc-go-to-php-in-windows - **Description**: 在windows系统下使用grpc go和PHP交互 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-16 - **Last Updated**: 2021-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # windows10下通过 gRPC,使 PHP 作为 Client 调用 Go Server > 引用 [gRPC如何在Golang和PHP中进行实战?7步教你上手! ](https://mp.weixin.qq.com/s/XFWCkIVl6HVlBncvsRSACg) ## 学习目的 了解PHP与Go通过gRPC交互 ## 编写protobuf文件并编译出指定文件 这里遇到一个巨坑,差点没办法进行下去。 1. 安装编译工具 protobuf, 去官网上下载并安装即可; 2. `go get -u github.com/golang/protobuf/protoc-gen-go`安装go生成代码工具; 3. 去PHP的扩展库里下载grpc,遗憾的是windows下并没有`protobuf`,不过后期仅实验使用并不影响; 4. 克隆grpc源码`git clone https://github.com/grpc/grpc`,可以切换到指定版本进行编译(我在master上编译) 5. `git submodule update --init `, 比上一条命令时间还长; 6. `make grpc_php_plugin`, 不好意思,windows系统下没这个`make`,就此卡住...... 不懂了,那就去官网上找答案!官网的[Docs](https://grpc.io/docs/languages/php/basics/)是这样的 ```bash mkdir -p cmake/build pushd cmake/build cmake ../.. make protoc grpc_php_plugin popd ``` 试了git的bash, cmder的bash,windows系统确实没这个`make`! 不过这里提到了`cmake`,一搜这个工具是跨平台的,还有exe版本,那就有希望了。下载下来默认安装,`cmake ../..`执行一下,看到它在跑了,虽然有些东西提示丢失,但还是很期待。 一阵操作后,看到`cmake/build`目录下多了很多文件,但是很遗憾,并没有`grpc_php_plugin.exe`! 作为一个没系统学习过C/C++的程序员,面对一堆看起来想编译文件的东西,实在不知道如何下手。再搜搜,github上有人分享了编译后的windows文件,下载尝试后仅报错,也许是版本的问题吧。此时看到一篇blog,[gRPC源码编译和使用(windows+vs) --史上最详细教程](https://blog.csdn.net/weixin_28927079/article/details/97262243),看到里面的截图和像号称宇宙最强编辑器`Visual Studio`,它确实也是windows上最常用的编译器和编辑器(相对于做windows软件开发的人员来说吧)。 下载安装经过了漫长的等待,终于将项目加载进去了! ![image-20211115181716239](image/image-20211115181716239.png) 选择Release x64开始编译,最后生成的文件在Release文件夹下。 ![image-20211116104630959](image/image-20211116104630959.png) 7. proto生成go文件: `protoc --go_out=plugins=grpc:. userServer.proto` 8. proto生成php文件: `protoc -I . --php_out=proto --plugin=protoc-gen-grpc=./grpc_php_plugin.exe userServer.proto`