## Class OkuyamaClient

Description

PHP用のクライアント.

Javaをそのまま焼きなおしました.
TODO:PHPのコーディングルールに従っていない.
TODO:以下がJava版のOkuyamaClientに足りないメソッドです.
getTagValues
getMultiTagValues
getMultiTagKeys
getTagKeysResult
getMultiTagKeysResult
利用方法
// クライアント作成
$client = new OkuyamaClient();
// okuyamaへ接続(MasterNodeのアドレスとポート番号を指定)
if(!$client->connect("127.0.0.1", 8888)) {
print_r("Sever Connection refused !!");
exit;
}
try {
// Key-Valueを登録
$client->setValue("Key-1", "Value-1");
// Keyを指定してValueを取得
$ret = $client->getValue("Key-1");
if ($ret[0] === "true") {
// Valueを表示
print_r($ret[1]);
} else if ($ret[0] === "false") {
// Valueなし
print_r("Not found");
}
$client->close();
} catch (Exception $e) {
var_dump($e);
}

- author: T.Okuyama

Located in /OkuyamaClient.class.php (line 45)

Method Summary
void autoConnect (masterNodes 0)
void close ()
void connect (server $server, port $port, [encoding $encoding = "UTF-8"])
要素1(処理成否):Boolean decrValue (keyStr $keyStr, value $value, [initCalcValue $initCalcValue = FALSE])
void endTransaction ()
Object[] getByteValue (keyStr $keyStr)
String[] getMultiTagKeys (tagList $tagList, [margeType $margeType = true], [noExistsData $noExistsData = true])
array getMultiTagValues (tagList $tagList, [margeType $margeType = true])
array getMultiValue (keyStrList $keyStrList, [encoding $encoding = "UTF-8"])
Object[] getObjectValue (keyStr $keyStr, encoding 1)
Object[] getObjectValueAndUpdateExpireTime (keyStr $keyStr, encoding 1)
String[] getOkuyamaVersion ()
Object[] getTagKeys (tagStr $tagStr, [noExistsData $noExistsData = true])
array getTagValues (tagStr $tagStr, [encoding $encoding = "UTF-8"])
String[] getValue (keyStr $keyStr, [encoding $encoding = "UTF-8"])
String[] getValueAndUpdateExpireTime (keyStr $keyStr, [encoding $encoding = "UTF-8"])
String[] getValueScript (keyStr $keyStr, scriptStr $scriptStr, [encoding $encoding = "UTF-8"])
String[] getValueScriptForUpdate (keyStr $keyStr, scriptStr $scriptStr, [encoding $encoding = "UTF-8"])
String[] getValueVersionCheck (keyStr $keyStr, [encoding $encoding = "UTF-8"])
要素1(処理成否):Boolean incrValue (keyStr $keyStr, value $value, [initCalcValue $initCalcValue = FALSE])
boolean initClient ()
String[] lockData (keyStr $keyStr, lockingTime $lockingTime, [waitLockTime $waitLockTime = 0])
String[] releaseLockData (keyStr $keyStr)
boolean removeSearchIndex (keyStr $keyStr, [indexPrefix $indexPrefix = null], [indexLength $indexLength = 3])
boolean removeTagFromKey (keyStr $keyStr, tagStr $tagStr)
String[] removeValue (keyStr $keyStr, [ $encoding = "UTF-8"])
object[] searchValue (searchCharacterList $searchCharacterList, searchType $searchType, [prefix $prefix = null])
void setConnectionInfos (masterNodes $masterNodes)
boolean setNewObjectValue (keyStr $keyStr, objectValue $objectValue, [tagStrs $tagStrs = null], [expireTime $expireTime = null])
boolean setNewValue (keyStr $keyStr, tagStrs $value, [value $tagStrs = null], [ $expireTime = null])
boolean setObjectValue (keyStr $keyStr, objectValue $objectValue, [tagStrs $tagStrs = null], [expireTime $expireTime = null])
void setSaveMaxDataSize (size $size)
boolean setValue (keyStr $keyStr, value $value, [tagStrs $tagStrs = null], [expireTime $expireTime = null])
boolean setValueAndCreateIndex (keyStr $keyStr, tagStrs $value, [value $tagStrs = null], [indexPrefix $indexPrefix = null])
boolean setValueVersionCheck (keyStr $keyStr, value $value, tagStrs $tagStrs, versionNo $versionNo)
void startTransaction ()
Methods
autoConnect (line 121)

設定されたMasterNodeの接続情報を元に自動的に接続を行う.
接続出来ない場合自動的に別ノードへ再接続を行う.

- access: public

void autoConnect (masterNodes 0)

- masterNodes 0: 接続情報の配列 "IP:PORT"の形式

close (line 212)

マスタサーバとの接続を切断.

- access: public

void close ()
connect (line 190)

接続処理.
エンコーディング指定有り.

- throws: Exception
- access: public

void connect (server $server, port $port, [encoding $encoding = "UTF-8"])

- server $server
- port $port
- encoding $encoding

decrValue (line 1459)

MasterNodeへデータの減算を要求する.

- return: true/false,要素2(演算後の結果):double 数値
- throws: OkuyamaClientException, Exception
- access: public

要素1(処理成否):Boolean decrValue (keyStr $keyStr, value $value, [initCalcValue $initCalcValue = FALSE])

- keyStr $keyStr: Key値文字列
- value $value: 減算値
- initCalcValue $initCalcValue: 計算対象のKey-Valueが存在しない場合の初期化指定(TRUE=初期化する(0のvalueが作成される), FALSE=初期化されずfalseが返る)

endTransaction (line 455)

Transactionを開始する.
データロック、ロックリリースを使用する場合は、
事前に呼び出す必要がある

- throws: Exception
- access: public

void endTransaction ()
getByteValue (line 3088)

マスタサーバからKeyでデータを取得する(バイナリ).

- return: 要素1(String)(データ有無):"true" or "false",要素2(byte[])(データ):{バイト配列}
- throws: OkuyamaClientException, Exception
- access: public

Object[] getByteValue (keyStr $keyStr)

- keyStr $keyStr: Key値文字列

getMultiTagKeys (line 2488)

MasterNodeからTag値を渡すことで紐付くKey値の配列を取得する

複数のTagを指定することで、一度に関連する値を取得可能
複数のTagに紐付く値はマージされて1つとなる
引数のmargeTypeを指定することで、ANDとORを切り替えることが出来る

- return: 取得データのKey配列 取得キーに同一の値を複数指定した場合は束ねられる。結果が0件の場合はnullが返る
- access: public

String[] getMultiTagKeys (tagList $tagList, [margeType $margeType = true], [noExistsData $noExistsData = true])

- tagList $tagList: Tag値のリスト
- margeType $margeType: 取得方法指定(true = AND、false=OR)
- noExistsData $noExistsData: 存在していないデータを取得するかの指定(true:取得する false:取得しない)

getMultiTagValues (line 2575)

MasterNodeからTag値を渡すことで紐付くValue値の集合を取得する

複数のTagを指定することで、一度に関連する値を取得可能
複数のTagに紐付く値はマージされて1つとなる
引数のmargeTypeを指定することで、ANDとORを切り替えることが出来る

- return: KeyとValueが格納された連想配列がかえされる。1件もデータが存在しない場合はnullが返る
- access: public

array getMultiTagValues (tagList $tagList, [margeType $margeType = true])

- tagList $tagList: Tag値のリスト
- margeType $margeType: 取得方法指定(true = AND、false=OR)

getMultiValue (line 1704)

マスタサーバからKeyを複数個指定することで一度に複数個のKeyとValueを取得する.

取得されたKeyとValueがarrayにKeyとValueの組になって格納され返される
存在しないKeyを指定した場合は返却される連想配列には含まれない
Key値にブランクを指定した場合はKeyを指定していないものとみなされる

文字列エンコーディング指定あり.

- return: 取得データの連想配列 取得キーに同一のKey値を複数指定した場合は束ねられる arrayのキー値は指定されたKeyとなりValueは取得した値となる
  全てのKeyに紐付くValueが存在しなかった場合は、nullが返る
- throws: OkuyamaClientException, Exception
- access: public

array getMultiValue (keyStrList $keyStrList, [encoding $encoding = "UTF-8"])

- keyStrList $keyStrList: Key値配列
  1つだけのKeyを指定することは出来ない
- encoding $encoding: エンコーディング指定

getObjectValue (line 1676)

マスタサーバからKeyでデータを取得する.
setObjectValueで保存したObjectを取得する.
実装としてはPHPのunserialize関数を利用しているため、unserialize関数で変換できない値は扱えない

- return: 要素1(データ有無(String)):"true" or "false" or "error",要素2(データ):Object型の値はもしくは"false"の場合はnull(データ有無がerrorの場合のみエラーメッセージ文字列(String型固定))
- throws: OkuyamaClientException, Exception
- access: public

Object[] getObjectValue (keyStr $keyStr, encoding 1)

- encoding 1
- keyStr $keyStr

getObjectValueAndUpdateExpireTime (line 2025)

マスタサーバからKeyでObjectを取得する.

setObjectDataで登録したデータを取り出す.
取得と同時に値の有効期限を取得時から最初に設定した時間分延長更新
有効期限を設定していない場合は更新されない.
Sessionキャッシュなどでアクセスした時間から所定時間有効などの場合にこちらのメソッドで
値を取得していれば自動的に有効期限が更新される

- return: 要素1(データ有無(String)):"true" or "false" or "error",要素2(データ):Object型の値はもしくは"false"の場合はnull(データ有無がerrorの場合のみエラーメッセージ文字列(String型固定))
- throws: OkuyamaClientException, Exception
- access: public

Object[] getObjectValueAndUpdateExpireTime (keyStr $keyStr, encoding 1)

- encoding 1
- keyStr $keyStr

getOkuyamaVersion (line 315)

接続先のokuyamaのバージョンを返す

- return: 要素1(データ有無):"true" or "false",要素2(データ):okuyamaのバージョン文字列
- throws: OkuyamaClientException, Exception
- access: public

String[] getOkuyamaVersion ()
getTagKeys (line 2265)

マスタサーバからTagでKey値群を取得する.

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

Object[] getTagKeys (tagStr $tagStr, [noExistsData $noExistsData = true])

- tagStr $tagStr: Tag文字列
- noExistsData $noExistsData: Keyが存在しない場合の取得指定 true=過去にtagを登録した場合はKey値は返す false=現時Keyが存在しなければ返却しない

getTagValues (line 2387)

MasterNodeからTag値を渡すことで紐付くValue値の集合を取得する.

文字列エンコーディング指定あり.
Keyは削除されTagとの紐付けだけ残っている値は返却されない.
存在しないTagを指定した場合はNULLが返される

- return: 取得データの連想配列 キー値はTag紐付くKeyとなりValueはそのKeyに紐付く値となる(存在しないTagを指定した場合はNULLが返される)
- throws: OkuyamaClientException, Exception
- access: public

array getTagValues (tagStr $tagStr, [encoding $encoding = "UTF-8"])

- tagStr $tagStr: Tag文字列
- encoding $encoding: エンコーディング指定

getValue (line 1579)

マスタサーバからKeyでデータを取得する.
文字列エンコーディング指定あり.

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

String[] getValue (keyStr $keyStr, [encoding $encoding = "UTF-8"])

- keyStr $keyStr
- encoding $encoding

getValueAndUpdateExpireTime (line 1925)

マスタサーバからKeyでデータを取得する.

文字列エンコーディング指定あり.
取得と同時に値の有効期限を取得時から最初に設定した時間分延長更新
有効期限を設定していない場合は更新されない.
Sessionキャッシュなどでアクセスした時間から所定時間有効などの場合にこちらのメソッドで
値を取得していれば自動的に有効期限が更新される

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

String[] getValueAndUpdateExpireTime (keyStr $keyStr, [encoding $encoding = "UTF-8"])

- keyStr $keyStr
- encoding $encoding

getValueScript (line 2050)

マスタサーバからKeyでデータを取得する.
取得データに対してJavaScriptを実行する.
文字列エンコーディング指定あり.

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

String[] getValueScript (keyStr $keyStr, scriptStr $scriptStr, [encoding $encoding = "UTF-8"])

- keyStr $keyStr: Key値文字列
- scriptStr $scriptStr: JavaScriptコード
- encoding $encoding: 取得Valueの文字コード

getValueScriptForUpdate (line 2159)

マスタサーバからKeyでデータを取得する.
取得データに対してJavaScriptを実行する.
文字列エンコーディング指定あり.

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

String[] getValueScriptForUpdate (keyStr $keyStr, scriptStr $scriptStr, [encoding $encoding = "UTF-8"])

- keyStr $keyStr: Key値文字列
- scriptStr $scriptStr: JavaScriptコード
- encoding $encoding: 取得Valueの文字コード

getValueVersionCheck (line 1817)

マスタサーバからKeyでデータを取得する.

文字列エンコーディング指定あり.
Valueのバージョン値を合わせて返す.
setValueVersionCheckにて取得したバージョンNoを利用する memcachedのgetsに相当する.

- return: 要素1(データ有無):"true" or "false",要素2(データ):"データ文字列",要素3(VersionNo):"数字"
- throws: OkuyamaClientException, Exception
- access: public

String[] getValueVersionCheck (keyStr $keyStr, [encoding $encoding = "UTF-8"])

- keyStr $keyStr: 取得対象のKey値文字列
- encoding $encoding: Valueの文字コード

incrValue (line 1339)

MasterNodeへデータの加算を要求する.

- return: true/false,要素2(演算後の結果):double 数値
- throws: OkuyamaClientException, Exception
- access: public

要素1(処理成否):Boolean incrValue (keyStr $keyStr, value $value, [initCalcValue $initCalcValue = FALSE])

- keyStr $keyStr: Key値文字列
- value $value: 加算値
- initCalcValue $initCalcValue: 計算対象のKey-Valueが存在しない場合の初期化指定(TRUE=初期化する(0のvalueが作成される), FALSE=初期化されずfalseが返る)

initClient (line 234)

Clientを初期化する.
今のところは最大保存サイズの初期化とバージョンの取得

- return: true:開始成功 false:開始失敗
- throws: Exception
- access: public

boolean initClient ()
lockData (line 481)

データのLockを依頼する.
本メソッドは、startTransactionメソッドを呼び出した場合のみ有効である

- return: 要素1(Lock成否):"true" or "false"
- throws: Exception
- access: public

String[] lockData (keyStr $keyStr, lockingTime $lockingTime, [waitLockTime $waitLockTime = 0])

- keyStr $keyStr
- lockingTime $lockingTime: Lockを取得後、維持する時間(この時間を経過すると自動的にLockが解除される)(単位は秒)(0は無制限)
- waitLockTime $waitLockTime: Lockを取得する場合に既に取得中の場合この時間はLock取得をリトライする(単位は秒)(0は1度取得を試みる)

releaseLockData (line 587)

データのLock解除を依頼する.
本メソッドは、startTransactionメソッドを呼び出した場合のみ有効である

- return: 要素1(Lock解除成否):"true" or "false"
- throws: OkuyamaClientException, Exception
- access: public

String[] releaseLockData (keyStr $keyStr)

- keyStr $keyStr

removeSearchIndex (line 2975)

全文検索用のIndexを削除する。 Prefixあり
検索Index長さ指定あり

- return: 削除成否
- throws: OkuyamaClientException, Exception
- access: public

boolean removeSearchIndex (keyStr $keyStr, [indexPrefix $indexPrefix = null], [indexLength $indexLength = 3])

- keyStr $keyStr: Key値文字列
- indexPrefix $indexPrefix: 作成時に設定したIndexのPrefix値
- indexLength $indexLength: 作成時に指定した作成Indexの長さ指定

removeTagFromKey (line 2864)

MasterNodeへKey値とTag値を指定してTagの紐付きを削除する.

- return: 削除成否
- throws: OkuyamaClientException, Exception
- access: public

boolean removeTagFromKey (keyStr $keyStr, tagStr $tagStr)

- keyStr $keyStr: Key値文字列
- tagStr $tagStr: Tag値文字列

removeValue (line 2765)

マスタサーバからKeyでデータを削除する.
取得値のエンコーディング指定が可能.

- return: 削除したデータ 内容) 要素1(データ削除有無):"true" or "false",要素2(削除データ):"データ文字列"
- throws: OkuyamaClientException, Exception
- access: public

String[] removeValue (keyStr $keyStr, [ $encoding = "UTF-8"])

- keyStr $keyStr: 削除対象のKey値文字列
- $encoding

searchValue (line 2626)

MasterNodeからsetValueAndCreateIndexで作成されたIndexを使って検索して該当する値を取得する.
検索可能な文字列は漢字の場合は1文字からで、それ以外は2文字から.
Prefxiあり.

- return: 要素1(データ有無):"true" or "false",要素2(該当のKey値配列):Stringの配列
- throws: OkuyamaClientException, Exception
- access: public

object[] searchValue (searchCharacterList $searchCharacterList, searchType $searchType, [prefix $prefix = null])

- searchCharacterList $searchCharacterList: 取得したい値の文字配列(エンコードはUTF-8固定)<文字配列>
- searchType $searchType: 1:AND検索　2:OR検索
- prefix $prefix: 検索Index作成時に指定したPrefix値

setConnectionInfos (line 107)

MasterNodeの接続情報を設定する.

本メソッドでセットし、autoConnect()メソッドを
呼び出すと、自動的にその時稼動しているMasterNodeにバランシングして
接続される。接続出来ない場合は、別のMasterNodeに再接続される.

- access: public

void setConnectionInfos (masterNodes $masterNodes)

- masterNodes $masterNodes: 接続情報の配列 "IP:PORT"の形式

setNewObjectValue (line 1181)

マスタサーバへObjectデータを送信する.

値の新規登録を保証する
PHPのオブジェクトデータの保存を行う.
実装としてPHPのserialize関数を利用しているため、serialize関数で変換できないObjectは扱えない.
Tag有り.
有効期限が秒単位で設定可能

- return: 成否
- throws: OkuyamaClientException, Exception
- access: public

boolean setNewObjectValue (keyStr $keyStr, objectValue $objectValue, [tagStrs $tagStrs = null], [expireTime $expireTime = null])

- keyStr $keyStr: Key値文字列
- objectValue $objectValue: Object値
- tagStrs $tagStrs: Tag文字配列
- expireTime $expireTime: 有効期限(秒/単位)

setNewValue (line 1027)

マスタサーバへデータを送信する.
1度のみ登録可能.
Tag有り.

- throws: OkuyamaClientException, Exception
- access: public

boolean setNewValue (keyStr $keyStr, tagStrs $value, [value $tagStrs = null], [ $expireTime = null])

- keyStr $keyStr
- tagStrs $value
- value $tagStrs
- $expireTime

setObjectValue (line 846)

マスタサーバへデータを送信する.

PHPのオブジェクトデータの保存を行う.
実装としてPHPのserialize関数を利用しているため、serialize関数で変換できないObjectは扱えない.
Tag有り.
有効期限が秒単位で設定可能

- return: 成否
- throws: OkuyamaClientException, Exception
- access: public

boolean setObjectValue (keyStr $keyStr, objectValue $objectValue, [tagStrs $tagStrs = null], [expireTime $expireTime = null])

- keyStr $keyStr: Key値文字列
- objectValue $objectValue: Object値
- tagStrs $tagStrs: Tag文字配列
- expireTime $expireTime: 有効期限(秒/単位)

setSaveMaxDataSize (line 465)

保存するデータの最大長を変更する.

- access: public

void setSaveMaxDataSize (size $size)

- size $size: 保存サイズ(バイト長)

setValue (line 688)

マスタサーバへデータを送信する.

データ保存を行う.
Tag有り.
有効期限が秒単位で設定可能

- return: 成否
- throws: OkuyamaClientException, Exception
- access: public

boolean setValue (keyStr $keyStr, value $value, [tagStrs $tagStrs = null], [expireTime $expireTime = null])

- keyStr $keyStr: Key値文字列
- value $value: Value文字列
- tagStrs $tagStrs: Tag文字配列
- expireTime $expireTime: 有効期限(秒/単位)

setValueAndCreateIndex (line 868)

MasterNodeへデータを登録要求する.

登録と同時にValueの検索Indexを作成する
検索Indexを作成するので通常のSetに比べて時間がかかる.
全文Indexが作成されるので、値は検索可能な文字を指定すること。例えばBASE64エンコードの値などの場合は
検索時も同様にエンコードした値で検索する必要がある.
※okuyamaは検索Index作成前に、同様のKey値で値が登録されている場合は、そのKey値で登録されているValue値の
検索インデックスを削除してから登録が行われる.
Tag有り.

- return: 登録成否
- throws: OkuyamaClientException, Exception
- access: public

boolean setValueAndCreateIndex (keyStr $keyStr, tagStrs $value, [value $tagStrs = null], [indexPrefix $indexPrefix = null])

- keyStr $keyStr: Key値文字列
- tagStrs $value: Tag値の配列 例){"tag1","tag2","tag3"}
- value $tagStrs: value値
- indexPrefix $indexPrefix: 作成する検索IndexをグルーピングするPrefix文字列.この値と同様の値を指定してsearchValueメソッドを呼び出すと、グループに限定して全文検索が可能となる.最大は128文字

setValueVersionCheck (line 1198)

マスタサーバへデータを送信する.

排他的バージョンチェックを行い、更新する.
バージョン番号をgetValueVersionCheckメソッドで事前にバージョン値を取得して更新時のチェック値として利用する memcachedのcasに相当する.

- return: 成否
- throws: OkuyamaClientException, Exception
- access: public

boolean setValueVersionCheck (keyStr $keyStr, value $value, tagStrs $tagStrs, versionNo $versionNo)

- keyStr $keyStr: 更新対象のKey値文字列
- value $value: 更新Value
- tagStrs $tagStrs: Tag値 ※必要ない場合はNULLを渡す
- versionNo $versionNo: getValueVersionCheckで取得した戻り値のバージョンNo値

startTransaction (line 382)

Transactionを開始する.
データロック、ロックリリースを使用する場合は、
事前に呼び出す必要がある

- throws: Exception
- access: public

void startTransaction ()

Documentation generated on Wed, 21 Nov 2012 05:32:33 +0900 by phpDocumentor 1.4.4