protobuf/thrift安装使用

protobuf

  • github 地址<a href=”https://github.com/google/protobuf/releases" /a>
  • 编译安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tar -xf  protobuf-all-3.5.0.tar.gz
    cd protobuf-3.5.0
    ./autogen.sh
    ./configure
    make
    make check
    make install

    ### 验证是否安装成功
    > protoc --version
  • 脚本执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    protoc --php_out=php目录 --proto_path=proto目录 proto文件
    ---------
    or 脚本

    #!/usr/bin/env bash

    #################################
    #
    # 根据 protobuf 协议生成 php 代码
    #
    ##################################

    proto_bin=$(which "protoc")
    if [ -z $proto_bin ]; then
    echo 'protoc不在你的环境变量中, 请先安装'
    exit
    fi

    root_dir=$(cd "$(dirname "$0")"; cd ../../..; pwd)
    home_dir=$(cd "$(dirname "$0")"; pwd)
    src_dir=$home_dir/php-src
    protos_dir=$home_dir/protos

    if [ ! -f $proto_bin ]; then
    echo -e "n 33[0;31mPlease install protobuf to -> $proto_bin 33[39;49;0mn"
    exit 0
    fi

    if [ ! -d $src_dir ]; then
    mkdir -p $src_dir
    fi

    rm -rf $src_dir/*

    for file in $protos_dir/*.proto; do
    echo -en "from: $file"
    $proto_bin --php_out=$src_dir --proto_path=$protos_dir $file
    echo -en "t 33[0;32m[DONE] 33[39;49;0mn"
    done

    echo -e "n 33[0;32mGenerate php code done! 33[39;49;0mn"

thrift