gRPC的官方文档中虽然没有给出PHP做Server的例子,但实际上grpc的扩展是支持的。
参考扩展中提供的几个类以及扩展内部的一些代码,写了一个简单的示例
这个示例只是证明PHP可以直接写gRPC服务,不代表可以在生产环境中这么用。主要原因有这么几点:
1. 不借助pcntl或swoole的话是个单进程的服务,并发会阻塞
2. 没做性能测试以及是否有内存泄漏的测试
3. 而且直接PHP做Server的争议也比较大
完整示例代码(https://github.com/ssfyn/php-grpc-server-example)
Server端的主要逻辑:
$this->server = new \Grpc\Server([]);
$this->server->addHttp2Port('
define fyn_pl
p "=>=>=>=>=>=>=>=> begin =>=>=>=>=>=>=>=>"
set $___tmp = $arg0.pListHead
while $___tmp
p $___tmp.arKey
set
set print pretty on
如果要将其作为默认设置,可以在`~/.gdbinit`中加上这句
if xcode-select -p &>/dev/null; then
echo 'installed';
else
echo 'not install';
fi
安装xcode命令行工具
xcode-select --install
安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
通过brew安装php5.6(或其它版本)
brew install php@5.6
通过brew安装php切换器
brew install brew-php-switcher
切换php版本