Thriftでphpの雛形を生成するときのオプションについて

今まで、TomcatやGoogle App Engine、NginxでThriftのサーバー機能を
動かしてみました。

ThriftのサーバーにTomcatを使用する
Google App Engine(Python)でThriftを動作させる
Debian + Nginx 0.7.x + mod_wsgi + pythonでthriftを動かす

本当は、ちょっと考えがあってApache + phpの環境でThriftサーバーを
動かしたかったのですが、やり方がわからなかったんですよ・・・


Thriftのジェネレートオプション



thriftコマンドを引数なしで実行すると、以下のような表示になると思います。


# thrift
Usage: thrift [options] file
Options:
    -version    Print the compiler version
    -o dir     Set the output directory for gen-* packages
                 (default: current directory)
    -I dir     Add a directory to the list of directories
                 searched for include directives
    -nowarn     Suppress all compiler warnings (BAD!)
    -strict     Strict compiler warnings on
    -v[erbose] Verbose mode
    -r[ecurse] Also generate included files
    -debug     Parse debug trace to stdout
    --gen STR Generate code with a dynamically-registered generator.
                 STR has the form language[:key1=val1[,key2,[key3=val3]]].
                 Keys and values are options passed to the generator.
                 Many options will not require values.

Available generators (and options):
    cocoa (Cocoa):
        log_unexpected: Log every time an unexpected field ID or type is encountered.
    cpp (C++):
        dense:         Generate type specifications for the dense protocol.
        include_prefix: Use full include paths in generated files.
    csharp (C#):
    erl (Erlang):
    hs (Haskell):
    html (HTML):
    java (Java):
        beans:         Generate bean-style output files.
        nocamel:         Do not use CamelCase field accessors with beans.
        hashcode:        Generate quality hashCode methods.
    ocaml (OCaml):
    perl (Perl):
    php (PHP):
        inlined:         Generate PHP inlined files
        server:         Generate PHP server stubs
        autoload:        Generate PHP with autoload
        oop:             Generate PHP with object oriented subclasses
        rest:            Generate PHP REST processors
    py (Python):
        new_style:     Generate new-style classes.
        twisted:         Generate Twisted-friendly RPC services.
    rb (Ruby):
    st (Smalltalk):
    xsd (XSD):



phpの雛形を生成する時、単純に

# thrift --gen php sample.thrift


としていたのですが、どうやらこれだとserver機能がない雛形が生成されるようです。

それぞれのオプションでどのような雛形が生成されるか調べてみました。



php:inlined




thrift --gen php:inlined sample.thrift



inlinedオプションをつけると、thriftのライブラリに依存しないクライアントの
雛形を生成してくれるようです。

ちなみに、このオプションで生成を実行すと、gen-phpではなく、
gen-phpiというディレクトリに雛形が生成されます。



php:autoload




thrift --gen php:autoload sample.thrift



autoloadオプションをつけると、
Calculator.php
sample.Calculator.client.php
sample.Calculator_add_args.php
sample.Calculator_add_result.php
このように、クラスごとに別のphpファイルでクライアントの雛形を生成するようです。



php:oop




thrift --gen php:oop sample.thrift



oopオプションをつけると、オブジェクトを使用した形式で
クライアントの雛形が生成されるようです。
おそらくですが、php5に特化したいときに使用するのでは?と思っています。






thrift --gen php:rest sample.thrift



restオプションをつけると、REST形式をサポートしたクライアントの
雛形が生成されるようです。



php:server




# thrift --gen php:server sample.thrift



serverオプションをつけると、XXXProcessorというクラスを含む
雛形を生成してくれます。




thriftのphp-serveのサンプルプログラムを見ると、CalculatorProcessorを
使用しています。

こんなクラス生成されないけどどうすればいいんだと途方にくれていましたが、
php:serverオプションで生成した雛形じゃないとサーバーに使用できない模様。


このオプションで出力した雛形を使用して、Apache + phpのThriftサーバーを
書いてみます。






関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ