#norelated
* PRMP [#n6cd6226]

** PRMPとは [#s35b0253]
PRMP(PHP Remote Method Proxy)はすべてPHPによって書かれたクライアントサーバ型のリモートメソッドプロキシライブラリです。~
PHP5以降の環境において、インスタンスのメソッドをクライアント/サーバ間で透過的に実行することを目的に作りました。~
たとえば、WEBサーバで利用されるPHPの処理を別サーバマシンに実行させる。とかができます。~
いわゆる「三階層モデル」としても利用できると思うので、PHPでミドルウェアが書けるかもしれません。~

** 開発のいきさつ [#jbe8a047]
私は前職で携帯サイトを作っていたりしていたのですが、PHPがwebサーバといっしょに動いていると、高負荷時にwebサーバに迷惑をかけているような気がしてなりませんでした。~
(どれくらい迷惑をかけているかを定量的に計測したことはないのですが...)~

実際にそのサイトは結構人気があり、XEON x 2CPUのwebサーバでも処理がキツくなくなっていました。~
また、定時のバッチ処理なんかもPHPで書いていたので、せっかくwebサーバはwebサーバで自らの仕事を全力でやってくれているのに、PHPで書かれた自分のコードがサーバリソースを消費してしまうのが申し訳なくて。。。~
かといって、PHPで簡単に(たとえばJavaRMIのように)別CPU上にあるPHPオブジェクトとのやり取りとかできるかどうかわからなかった(調べた範囲では*簡単*にはできそうもなかった)ので、自分で使うようにつくってみました。~

ここにきて、いくらか体裁が整ってきたのとなんか勢いで公開してみます。今は反省してい(ry.....。~

~
&color(red){''※2008.07.25追記''};~
いろいろ調べたら Zend FrameworkにZend_XmlRpcというXML-RPCで似たような機能のものがあった....orz~
んま、あちらは普通にhttpセッションでやるようだから、差別化はできてるか、、、、ううむぅ。(^^;~


** 特徴 [#z65887d3]
-シンプルで(たぶん)軽量。~
-ネットワーク透過でメソッドをリモート実行できる。~
-メッセージの書式はXML-RPCを利用するがHTTPは使わず、単純なtcpストリームでおこなっている。~
-インスタンス毎に別プロセスになる。~
-インスタンスが生きている限りtcpセッションが持続する。~
-オープンソース。~

** 動作要件 [#o9add4eb]
-PHP 5以上 (PHP4では動きません)~
-PHP標準の XML-RPCを利用するのでコンパイル時に configureでオプション -with-xmlrpc を使用すること。~
(メッセージはXML-RPCの書式を利用しています)~
-PHPのCLI(コンマンドラインインタフェース)が使えること。(サーバ側)~
-任意のTCPポートが使えること。

** 動作確認済み環境 [#db46b4ec]
CentOS 5 + PHP 5.2.6~
(これ以外の環境で動かしたことはありません)~
~
PHP5の機能を使っているのでPHP4では動きませんが、大した機能をつかっているわけではないので、たぶん多少書き換えれば動くんじゃないかと思います。~
** ダウンロード [#qe86f2b8]
2006.07.17 リリース版     [[download>http://www.ohneta.net/projects/prmp/PRMP.release.2008.07.17.tgz]]~

*** ファイル構成 [#bc648bae]
>client_test.php
>>クライアント側実行サンプル。CLI用。
 
>client_test_web.php
>>クライアント側実行サンプル。WEB用。

>start_server.sh
>>サーバ側実行シェルスクリプト

>prmp/server/remote_message_server.php
>>リモートメッセージサーバ。
>>クライアントからの接続を待ち、メソッドの代理実行を行う。
>>リモートクラスはクライアントからの要求により、このサーバがインスタンス化する。
>>インスタンス化後はクライアントと1対になり処理を行う。

>prmp/server/server_classes.inc
>>リモートクラスのインクルード定義。
>>ここにリモートクラスのファイル名をインクルードすることで、リモートメッセージサーバから呼び出せるようになる。

>prmp/server/sample_class.inc
>>クライアントからリモートとして呼ばれるクラスのサンプル。

>prmp/client/client_stub.inc
>>リモートメッセージクライアントの基底クラス。
>>リモートメッセージを利用する場合、このクラスから派生させるのが一般的。
>>(このクラス自身をインスタンス化してリモートメッセージサーバと接続することは可能)

>prmp/client/sample_class.inc
>>クライアントからリモートで呼ぶクラスのサンプル。server側と対応している。

** 動作解説 [#y09dd742]
[[こちら>PRMPの動作解説]]を参照。~

** 利用方法 [#l9b4ab60]
[[こちら>PRMPの利用]]を参照。~

** 著作権 [#mddf82d9]
現在、配布しているRPMPのプログラム、ドキュメント類の著作権はすべてohnetaに帰属します。~

** 利用条件 [#v8f281ab]
下記、「免責について」を了承のうえご利用ください。~
また、配布ライセンスはとりあえずBSDライセンでお願いします。~
のちのち変更するかもしれませんが。。。~

** 免責について [#t129ed6e]
PRMPに関連する人物(作者、配布者等)は、あなたがPRMPを利用したことに関連して生ずる損害について、一切責任を負いません。PRMPの利用は、利用者の責任で行ってください。~
また、PRMPの配布物およびそれに関連する全てのドキュメント、webページ等は、あなたのコンピュータやソフトウェア、データ、通信回線や通信機器などに損害が発生しないことを一切保証しません。もし、障害が発生しても一切責任は負いません。~
これらをご了承のうえ、PRMPをご利用ください。また、この内容に不満、不服がある場合はPRMPの利用はご遠慮ください。~

** ご意見ご感想はこちら [#e4ae8afe]
e-mail : ohneta@gmail.com~
↑@が全角の「@」になってますので、修正してからお送りください。

** 履歴 [#s7b2ad4a]
2008.07.17    PRMP.release.2008.07.17.tgz 公開~
2008.07.16    PRMP.release.2008.07.16.tgz 公開 / pukiwikiページ公開~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS