Roma クライアント
php クライアント
ソース
githubでこのクライアントのソースコードを調べることができます。ぜひ、貢献してください!
https://github.com/roma/roma-php-client
インストール
以下のモジュールをPHPクライアントとして配布しています。
- librmcc.so
- phprmcc.so
- RomaClient.so
注意: romaclient.so は以前のバージョンで使われています。このファイルは今は推奨されません。
ユーザへの切り替え
$ sudo su
1. モジュールファイルをセットアップします
# cd ${WORK_DIR}
$ pwd
$ tar xzvf roma_php_client_${VERSION}.tar.gz
$ cp librmcc.so /usr/local/lib/librmcc.so.${VERSION}
$ ln -sf /usr/local/lib/librmcc.so.${VERSION} /usr/local/lib/librmcc.so
$ cp phprmcc.so /usr/local/lib/phprmcc.so.${VERSION}
$ ln -sf /usr/local/lib/phprmcc.so.${VERSION} /usr/local/lib/phprmcc.so
$ chown root:roma /usr/local/lib/librmcc.so.${VERSION} # We use roma group in this case.
$ chmod 755 /usr/local/lib/librmcc.so.${VERSION}
$ chown root:roma /usr/local/lib/phprmcc.so.${VERSION}
$ chmod 755 /usr/local/lib/phprmcc.so.${VERSION}
$ diff phprmcc.so /usr/local/lib/phprmcc.so # Please, check there is no differences.
$ diff librmcc.so /usr/local/lib/librmcc.so # Please, check there is no differences.
2. httpd.confの設定
以下の設定を追加してください。
SetEnv LD_LIBRARY_PATH /usr/local/lib
3. php.iniを編集します
以下の設定を追加してください。
extension=phprmcc.so
romaclient.soを使わないで、コメントアウトしてください。romaclient.so は非推奨です。
以前extension=phprmcc.so
今後
# extension=phprmcc.so
4. RomaClient.php を配布する
$ cd ${WORK_DIR}
$ pwd
$ ls -ld /usr/local/lib/roma
/usr/local/liv/roma が無い場合は、作成してください。
$ mkdir -p /usr/local/lib/roma
$ chown root:roma /usr/local/lib/roma
$ chmod 775 /usr/local/lib/roma
romaディレクトリに RomaClient.php を配備します。
$ cp RomaClient.php /usr/local/lib/roma/RomaClient.php.${VERSION}
$ chown root:roma /usr/local/lib/roma/RomaClient.php.${VERSION}
$ chmod 644 /usr/local/lib/roma/RomaClient.php.${VERSION}
$ ln -sf /usr/local/lib/roma/RomaClient.php.${VERSION} /usr/local/lib/roma/RomaClient.php
$ ls -l /usr/local/lib/roma/RomaClient.php # Check the files are just deployed.
$ diff RomaClient.php /usr/local/lib/roma/RomaClient.php # Check there is no differences the files.
5. apacheを再起動する
apacheを再起動してください。例えば、以下の手順です。
$ apachectl graceful
6. 確認
$ tail -f /usr/local/var/log/php/error.log #Check there is not a lot of strange error log.
lddコマンドを使って依存性を調べることができます。
sudo su maint
bash
cd /usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib
ldd phprmcc.so
成功例
$ ldd phprmcc.so
linux-gate.so.1 => (0xb78a5000)
librmcc.so => /usr/local/lib/librmcc.so (0xb7884000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb778f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7782000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7626000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb74d3000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb74ad000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7494000)
/lib/ld-linux.so.2 (0xb78a6000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7490000)
libz.so.1 => /usr/lib/libz.so.1 (0xb747a000)
失敗例
$ ldd phprmcc.so
linux-gate.so.1 => (0x00af8000)
librmcc.so => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00939000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00110000)
libc.so.6 => /lib/libc.so.6 (0x0013b000)
libm.so.6 => /lib/libm.so.6 (0x00f37000)
/lib/ld-linux.so.2 (0x00b1b000)
ロールバック
ロールバックしたい場合は、以下の手順を使ってください。
インストールされたライブラリを削除します。
$ sudo su
$ rm /usr/local/lib/phprmcc.so.${VERSION}
$ rm /usr/local/lib/phprmcc.so
$ rm /usr/local/lib/librmcc.so.${VERSION}
$ rm /usr/local/lib/librmcc.so
$ ls /usr/local/lib # Check these filese were deleted.
httpd.conf を編集します
以前SetEnv LD_LIBRARY_PATH /usr/local/lib
今後
# SetEnv LD_LIBRARY_PATH /usr/local/lib
php.iniを編集します
以前extension=phprmcc.so
今後
# extension=phprmcc.so
romaclient.so を使う場合は、php.iniは以下のようになります。
extension=romaclient.so
# extension=phprmcc.so
RomaClient.php を削除します
$ rm /usr/local/lib/roma/RomaClient.php.${VERSION}
$ rm /usr/local/lib/roma/RomaClient.php
apacheを再起動してください。例えば、以下の手順です。
$ apachectl graceful
ROMAのPHPクライアントの使い方
ROMAクライアントの使用を宣言します。
require "RomaClient.php";
ROMAサーバに接続します。
// @param Set the access point list with "," delimiter.
// @return roma-client
$hosts = array('127.0.0.1_11211','127.0.0.1_11212');
$romaclient = $romaclient = RomaClient::getInstance($hosts);
注意: オブジェクトのインスタンスが破壊された場合は、ROMAから自動的に切断されないでしょう。