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サーバーを
書いてみます。
- 関連記事
コメント