protobuf之于php的总结

protobuf之于php这块,有三个东西。

  1. 根据你定义的proto文件生成php代码的protoc命令工具
  2. 生成的php代码要运行起来必须依赖一个composer包:google/protobuf
  3. google/protobuf包加速的C扩展,即使没有它,只要安装了php包,你生成的代码也是能跑的

相关的资源链接如下:
安装protoc命令工具
定义proto并生成php代码的示例
运行生成的php代码所必须的composer包
google/protobuf包加速的C扩展
protobuf之于php这块的官方github库

那么既然安装了google/protobuf包就可以运行生成的php代码,那么要不要装C扩展呢?
我的答案是生产环境,如果你的服务运行压力大,那必须安装C扩展,安装后机器的CPU消耗会获得一个明显的下降。
我给出一组数据,仅作参考:
没装C扩展的压测结果

Duration=16.8986119s IOPS=5917 P50=121ms P90=464ms P99=1198ms
Duration=18.2297206s IOPS=5485 P50=134ms P90=490ms P99=1114ms
Duration=17.4630705s IOPS=5726 P50=124ms P90=461ms P99=1040ms

安装C扩展后的压测结果

Duration=14.0495202s IOPS=7119 P50=64ms P90=365ms P99=1035ms
Duration=13.3690243s IOPS=7479 P50=59ms P90=375ms P99=1030ms
Duration=14.2898181s IOPS=6997 P50=57ms P90=372ms P99=1063ms

从数据看,收益明显,P90的响应耗时,下降了将近100毫秒。
下面是C扩展的安装流程:

wget https://pecl.php.net/get/protobuf-3.24.3.tgz
tar zxvf protobuf-3.24.3.tgz
cd  protobuf-3.24.3
/usr/local/bin/php8.1.9/bin/phpize
./configure --with-php-config=/usr/local/bin/php8.1.9/bin/php-config
make -j 4 && make install

编译好后,将protobuf.so文件引入php.ini即可:extension=protobuf.so
这个扩展安装步骤就是php的常规步骤。

本作品采用《CC 协议》,转载必须注明作者和本文链接
梦想星辰大海
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!