0

ローカルシステムにThriftをセットアップしました-Windows7、PHP 5.3.8、Apache 2.2.21、Thrift 0.80、APC。Thriftコンパイラから生成されたクライアント/サーバーthriftプログラムを実行しようとしましたが、どのプログラムも機能しません。それぞれがエラーを出します'TSocket: "localhost / path_to_clientport80"から4バイトを読み取れませんでした'。

PHPのSocket拡張機能を有効にして、THttpClientクラスとTSocketクラスを使用してみましたが、いずれも機能していません。プロトコルクラスをTBinaryProtocolからTBinaryProtocolAcceleratedに切り替えましたが、結果がありません。

Thriftのコアクラスを調べましたが、「_ handle」は実際にはファイルを指しているのではなく、「localhost」を指していることがわかります。ファイルパスを指定しようとしましたが、それでも機能しません。

ソケットプログラミングの経験はあまりありませんが、ほとんどのことを正しくやっていると感じています。

同じことについてのあなたの助けは高く評価されます。

4

1 に答える 1

2

私はこの問題を解決することができました、そしてここに方法があります-:

  1. 何よりもまず、ThriftコンパイラからPHPコードを生成するための構文は、thrift --gen php * :server *yourfile.thriftです。コードに:serverがありませんでした。これはThriftのドキュメントには記載されていません

  2. Thriftコンパイラから生成されたPHPファイルをクライアントおよびサーバーファイルに含めます。

  3. サーバーファイルはThriftインターフェースを実装する必要があります。

  4. 最初にサーバーファイルを実行して、Thriftサーバーを起動してください。yourclassProcessorファイルのオブジェクトを作成し、トランスポート層を開きます。これは、thriftphpチュートリアルにあります。

  5. 例に示すように、クライアントファイルからサーバー関数を呼び出します。

注-Thriftで関数が型を返すことを十分に理解していることを確認してください。

よろしくクナル

于 2012-07-11T14:14:31.913 に答える