PRMPの利用について †サンプルを使って、プログラミングの方法を解説します。 プログラミング方法 †1. リモートでなにをするか決める 1. リモートでなにをするか決める 仕様 public int add($param1, $param2) @param int $param1 加算する第1引数 @param int $param2 加算する第2引数 @return int $param1と$param2を加算した結果 2. 「なんかする」部分コーディング <?php class sample_class { public function add($param1, $param2) { return $param1 + $param2; } } // 動作するかどうか確認 $obj = new sample_class(); $ret = $obj->add(1, 2); print("$ret\n"); ?> これを sample_class.php として保存。cliで実行してみる。 $ php sample_class.php 3 これでなんかする部分はOK.これをリモートで呼び出せるようにする。 3. サーバ化 public function add($param1, $param2) { return $param1 + $param2; } ↓ public function add($params) { return $params[0] + $params[1]; } これで完了。一応、動作確認。 $ret = $obj->add(1, 2); ↓ $ret = $obj->add(array(1, 2)); $ php sample_class.php 3 OK. include_once("sample_class.inc"); 4. クライアント実装 クライアントではコンストラクタが必要になります。 クライアントのクラスはこのような感じになります。 <?php include_once("client_stub.inc"); class sample_class extends client_stub { function __construct() { $this->setServerURI('tcp://localhost:8000'); // サーバのURIを指定 parent::__construct(); // 親クラスのコンストラクタを呼ぶ $this->init(); // 初期化 } public function add($param1, $param2) { return $this->call_method('add', $param1, $param2); } } ?> ここではサーバが同じマシンで動いていることを前提としている。
実際にサーバと接続している部分は
このメソッドがXML-RPCメッセージを生成しサーバと通信をし、その結果をクライアントプロルラムが利用できる形に変換しています。 5. リモート操作確認 <?php include_once('sample_class.inc'); $obj = new sample_class(); $res = $obj->add(1, 2); print("$res\n"); ?>
まずはサーバ側を実行。 $ php remote_message_server.php サーバが起動すると > [2008-07-16 10:06:16] 000 "server started" (8695) のようなログが出力される。(日時と()内部の数字は任意) 次にテスト用サンプルスクリプトを実行する。 $ php client_sample.php 3 OK!! これで一連の実装は完了。 さぁ、「なんかおもしろいこと」しましょう♪ |