PRMP

PRMPとは

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

開発のいきさつ

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

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

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


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

特徴

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

動作要件

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

動作確認済み環境

CentOS 5 + PHP 5.2.6
(これ以外の環境で動かしたことはありません)

PHP5の機能を使っているのでPHP4では動きませんが、大した機能をつかっているわけではないので、たぶん多少書き換えれば動くんじゃないかと思います。

ダウンロード

2006.07.17 リリース版 download

ファイル構成

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側と対応している。

動作解説

こちらを参照。

利用方法

こちらを参照。

著作権

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

利用条件

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

免責について

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

ご意見ご感想はこちら

e-mail : ohneta@gmail.com
↑@が全角の「@」になってますので、修正してからお送りください。

履歴

2008.07.17 PRMP.release.2008.07.17.tgz 公開
2008.07.16 PRMP.release.2008.07.16.tgz 公開 / pukiwikiページ公開


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-30 (日) 22:36:35 (198d)