Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

thrift/PHP_Client

PHPクライアントの作成

ここでは、既に*.thriftの定義を行い、--gen phpでPHP用のコードが生成されているものとする。 その上で、PHPコードからこれをクライアントとして使用する方法を見ていく。

コードの用意

http://thrift.apache.org/download/からダウンロードされたtar.gzを展開すると、lib/php中にREADMEドキュメントがある。 おおよその手順はここに記述されている。要点は以下

  • ThriftはPHP 5が必要。
  • lib/php/srcの内容をPHPアプリのコードベースにコピーする。
  • $GLOBALS['THRIFT_ROOT']がそのパスを示すように設定する。
    これを行わない場合には、自動的に設定されるが、dir(FILE)によって行うため、効率は若干悪くなる。

  • $GLOBALS['THRIFT_ROOT'].'Thrift.php'をinclude_onceする。
    これは他のThriftファイルをincludeする以前に行う必要がある。

*.thrift定義から生成されたphpファイルは、$GLOBALS['THRIFT_ROOT'].'packages/MyPackage/'以下に置く必要がある。 ここで、MyPackageは*.thriftファイルの名称になるようだ。

例えば、thriftのライブラリとsample.thriftから生成されたファイルは次のようなレイアウトになる。

トップ
 +-- Throft.php
 +-- autoload.php
 +-- extディレクトリ
 +-- protocolディレクトリ
 +-- serverディレクトリ
 +-- transportディレクトリ
 +-- packages (作成する)
      +-- sample (作成する)
           +-- 生成されたthriftファイル

呼び出し

クライアントとして呼び出しを行うには、すくなくとも以下が必要。sample.thriftに定義されたHelloインタフェースの場合。

require_once $GLOBALS['THRIFT_ROOT'].'Thrift.php'; require_once $GLOBALS['THRIFT_ROOT'].'transport/TSocket.php'; require_once $GLOBALS['THRIFT_ROOT'].'transport/TBufferedTransport.php'; require_once $GLOBALS['THRIFT_ROOT'].'protocol/TBinaryProtocol.php'; require_once $GLOBALS['THRIFT_ROOT'].'packages/sample/Hello.php';

  • $socket = new TSocket(サーバホスト, ポート); $transport = new TBufferedTransport($socket, 1024, 1024);

    $hello = new HelloClient(new TBinaryProtocol($transport)); $transport->open();