(empty log message)
@@ -55,7 +55,9 @@ | ||
55 | 55 | |
56 | 56 | private $okuyamaVersionNo = 0.00; |
57 | 57 | |
58 | + private $getMultiEndOfDataStr = "END"; | |
58 | 59 | |
60 | + | |
59 | 61 | /** |
60 | 62 | * MasterNodeの接続情報を設定する.<br> |
61 | 63 | * 本メソッドでセットし、autoConnect()メソッドを<br> |
@@ -372,7 +374,7 @@ | ||
372 | 374 | if ($serverRet[0] === "37") { |
373 | 375 | if ($serverRet[1] === "true") { |
374 | 376 | // TransactionCode取得 |
375 | - $ret = true; | |
377 | + $ret = true; | |
376 | 378 | $this->transactionCode = $serverRet[2]; |
377 | 379 | } else { |
378 | 380 |
@@ -788,7 +790,25 @@ | ||
788 | 790 | } |
789 | 791 | |
790 | 792 | |
793 | + /** | |
794 | + * マスタサーバへデータを送信する.<br> | |
795 | + * PHPのオブジェクトデータの保存を行う.<br> | |
796 | + * 実装としてPHPのserialize関数を利用しているため、serialize関数で変換できないObjectは扱えない.<br> | |
797 | + * Tag有り.<br> | |
798 | + * 有効期限が秒単位で設定可能 | |
799 | + * | |
800 | + * @param keyStr | |
801 | + * @param objectValue | |
802 | + * @param tagStrs | |
803 | + * @param expireTime 有効期限(秒/単位) | |
804 | + * @return boolean | |
805 | + * @throws Exception | |
806 | + */ | |
807 | + public function setObjectValue($keyStr, $objectValue, $tagStrs = null, $expireTime = null) { | |
808 | + return $this->setValue($keyStr, serialize($objectValue), $tagStrs, $expireTime); | |
809 | + } | |
791 | 810 | |
811 | + | |
792 | 812 | /** |
793 | 813 | * MasterNodeへデータを登録要求する.<br> |
794 | 814 | * 登録と同時にValueの検索Indexを作成する<br> |
@@ -956,7 +976,7 @@ | ||
956 | 976 | * @return boolean |
957 | 977 | * @throws Exception |
958 | 978 | */ |
959 | - public function setNewValue($keyStr, $value, $tagStrs = null, $expireTime) { | |
979 | + public function setNewValue($keyStr, $value, $tagStrs = null, $expireTime = null) { | |
960 | 980 | $ret = false; |
961 | 981 | $serverRetStr = null; |
962 | 982 | $serverRet = null; |
@@ -1556,7 +1576,146 @@ | ||
1556 | 1576 | |
1557 | 1577 | /** |
1558 | 1578 | * マスタサーバからKeyでデータを取得する.<br> |
1579 | + * setObjectValueで保存したObjectを取得する.<br> | |
1580 | + * 実装としてはPHPのunserialize関数を利用しているため、unserialize関数で変換できない値は扱えない | |
1581 | + * | |
1582 | + * @param keyStr | |
1583 | + * @param encoding | |
1584 | + * @return Object[] 要素1(データ有無(String)):"true" or "false" or "error",要素2(データ):Object型の値はもしくは"false"の場合はnull(データ有無がerrorの場合のみエラーメッセージ文字列(String型固定)) | |
1585 | + * @throws Exception | |
1586 | + */ | |
1587 | + public function getObjectValue($keyStr) { | |
1588 | + | |
1589 | + $ret = array(); | |
1590 | + $strRet = $this->getValue($keyStr); | |
1591 | + if ($strRet[0] === "true") { | |
1592 | + $ret[0] = "true"; | |
1593 | + $ret[1] = unserialize($strRet[1]); | |
1594 | + } else { | |
1595 | + $ret[0] = $strRet[0]; | |
1596 | + $ret[1] = $strRet[1]; | |
1597 | + } | |
1598 | + return $ret; | |
1599 | + } | |
1600 | + | |
1601 | + | |
1602 | + /** | |
1603 | + * マスタサーバからKeyを複数個指定することで一度に複数個のKeyとValueをを取得する.<br> | |
1604 | + * 取得されたKeyとValueがarrayにKeyとValueの組になって格納され返される<br> | |
1605 | + * 存在しないKeyを指定した場合は返却される連想配列には含まれない<br> | |
1606 | + * Key値にブランクを指定した場合はKeyを指定していないものとみなされる<br> | |
1607 | + * | |
1559 | 1608 | * 文字列エンコーディング指定あり.<br> |
1609 | + * | |
1610 | + * @param keyStrList Key値配列<br>1つだけのKeyを指定することは出来ない | |
1611 | + * @param encoding エンコーディング指定 | |
1612 | + * @return array 取得データの連想配列 取得キーに同一のKey値を複数指定した場合は束ねられる arrayのキー値は指定されたKeyとなりValueは取得した値となる<br>全てのKeyに紐付くValueが存在しなかった場合は、nullが返る | |
1613 | + * @throws Exception | |
1614 | + */ | |
1615 | + public function getMultiValue($keyStrList, $encoding="UTF-8") { | |
1616 | + $ret = array(); | |
1617 | + $serverRetStr = null; | |
1618 | + $serverRet = null; | |
1619 | + | |
1620 | + $serverRequestBuf = null; | |
1621 | + | |
1622 | + try { | |
1623 | + if ($this->socket == null) throw new OkuyamaClientException("No ServerConnect!!"); | |
1624 | + | |
1625 | + // エラーチェック | |
1626 | + // Keyに対する無指定チェック | |
1627 | + if ($keyStrList == null || count($keyStrList) < 2) { | |
1628 | + throw new OkuyamaClientException("The blank is not admitted on a key"); | |
1629 | + } | |
1630 | + | |
1631 | + $sendKeyList = array(); | |
1632 | + | |
1633 | + // 文字列バッファ初期化 | |
1634 | + $serverRequestBuf = ""; | |
1635 | + | |
1636 | + // 処理番号連結 | |
1637 | + $serverRequestBuf = $serverRequestBuf . "22"; | |
1638 | + // セパレータ連結 | |
1639 | + $serverRequestBuf = $serverRequestBuf . $this->sepStr; | |
1640 | + | |
1641 | + // Key連結(Keyはデータ送信時には必ず文字列が必要) | |
1642 | + $keysSep = ""; | |
1643 | + for ($i = 0; $i < count($keyStrList); $i++) { | |
1644 | + if ($keyStrList[$i] != null && trim($keyStrList[$i]) !== "") { | |
1645 | + $serverRequestBuf = $serverRequestBuf . $keysSep; | |
1646 | + $serverRequestBuf = $serverRequestBuf . $this->dataEncoding($keyStrList[$i]); | |
1647 | + $sendKeyList[] = $keyStrList[$i]; | |
1648 | + $keysSep = $this->sepStr; | |
1649 | + } | |
1650 | + } | |
1651 | + | |
1652 | + if ($sendKeyList == null || count($sendKeyList) < 2) { | |
1653 | + throw new OkuyamaClientException("The blank is not admitted on a key"); | |
1654 | + } | |
1655 | + | |
1656 | + // サーバ送信 | |
1657 | + @fputs($this->socket, $serverRequestBuf . "\n"); | |
1658 | + | |
1659 | + | |
1660 | + $readIdx = 0; | |
1661 | + while (true) { | |
1662 | + $serverRetStr = @fgets($this->socket); | |
1663 | + if ($serverRetStr === FALSE) break; | |
1664 | + | |
1665 | + $serverRetStr = str_replace("\r", "", $serverRetStr); | |
1666 | + $serverRetStr = str_replace("\n", "", $serverRetStr); | |
1667 | + if ($serverRetStr === $this->getMultiEndOfDataStr) break; | |
1668 | + | |
1669 | + $serverRet = explode($this->sepStr, $serverRetStr); | |
1670 | + | |
1671 | + // 処理の妥当性確認 | |
1672 | + if ($serverRet[0] === "22") { | |
1673 | + if ($serverRet[1] === "true") { | |
1674 | + | |
1675 | + // データ有り | |
1676 | + $oneDataKey = null; | |
1677 | + $oneDataValue = null; | |
1678 | + | |
1679 | + $oneDataKey = $sendKeyList[$readIdx]; | |
1680 | + // Valueがブランク文字か調べる | |
1681 | + if ($serverRet[2] === $this->blankStr) { | |
1682 | + $oneDataValue = ""; | |
1683 | + } else { | |
1684 | + | |
1685 | + // Value文字列をBase64でデコード | |
1686 | + $oneDataValue = $this->dataDecoding($serverRet[2], $encoding); | |
1687 | + } | |
1688 | + | |
1689 | + $ret[$oneDataKey] = $oneDataValue; | |
1690 | + } | |
1691 | + } else { | |
1692 | + | |
1693 | + // 妥当性違反 | |
1694 | + throw new OkuyamaClientException("Execute Violation of validity"); | |
1695 | + } | |
1696 | + $readIdx++; | |
1697 | + } | |
1698 | + | |
1699 | + if (count($ret) < 1) $ret = null; | |
1700 | + | |
1701 | + } catch (OkuyamaClientException $oe) { | |
1702 | + throw $oe; | |
1703 | + } catch (Exception $e) { | |
1704 | + if ($this->masterNodesList != null && count($this->masterNodesList) > 1) { | |
1705 | + if($this->autoConnect()) { | |
1706 | + $ret = $this->getMultiValue($keyStrList, $encoding); | |
1707 | + } | |
1708 | + } else { | |
1709 | + throw $e; | |
1710 | + } | |
1711 | + } | |
1712 | + return $ret; | |
1713 | + } | |
1714 | + | |
1715 | + | |
1716 | + /** | |
1717 | + * マスタサーバからKeyでデータを取得する.<br> | |
1718 | + * 文字列エンコーディング指定あり.<br> | |
1560 | 1719 | * Valueのバージョン値を合わせて返す.<br> |
1561 | 1720 | * memcachedのgetsに相当する.<br> |
1562 | 1721 | * |
@@ -1761,6 +1920,33 @@ | ||
1761 | 1920 | |
1762 | 1921 | |
1763 | 1922 | /** |
1923 | + * マスタサーバからKeyでObjectを取得する.<br> | |
1924 | + * setObjectDataで登録したデータを取り出す.<br> | |
1925 | + * 取得と同時に値の有効期限を取得時から最初に設定した時間分延長更新<br> | |
1926 | + * 有効期限を設定していない場合は更新されない.<br> | |
1927 | + * Sessionキャッシュなどでアクセスした時間から所定時間有効などの場合にこちらのメソッドで<br> | |
1928 | + * 値を取得していれば自動的に有効期限が更新される<br> | |
1929 | + * | |
1930 | + * @param keyStr | |
1931 | + * @param encoding | |
1932 | + * @return Object[] 要素1(データ有無(String)):"true" or "false" or "error",要素2(データ):Object型の値はもしくは"false"の場合はnull(データ有無がerrorの場合のみエラーメッセージ文字列(String型固定)) | |
1933 | + * @throws Exception | |
1934 | + */ | |
1935 | + public function getObjectValueAndUpdateExpireTime($keyStr) { | |
1936 | + $ret = array(); | |
1937 | + $strRet = $this->getValueAndUpdateExpireTime($keyStr); | |
1938 | + if ($strRet[0] === "true") { | |
1939 | + $ret[0] = "true"; | |
1940 | + $ret[1] = unserialize($strRet[1]); | |
1941 | + } else { | |
1942 | + $ret[0] = $strRet[0]; | |
1943 | + $ret[1] = $strRet[1]; | |
1944 | + } | |
1945 | + return $ret; | |
1946 | + } | |
1947 | + | |
1948 | + | |
1949 | + /** | |
1764 | 1950 | * マスタサーバからKeyでデータを取得する.<br> |
1765 | 1951 | * 取得データに対してJavaScriptを実行する.<br> |
1766 | 1952 | * 文字列エンコーディング指定あり.<br> |
@@ -2445,6 +2631,122 @@ | ||
2445 | 2631 | |
2446 | 2632 | |
2447 | 2633 | /** |
2634 | + * 全文検索用のIndexを削除する。 | |
2635 | + * Prefixあり<br> | |
2636 | + * 検索Index長さ指定あり<br> | |
2637 | + * | |
2638 | + * | |
2639 | + * @param keyStr Key値 | |
2640 | + * @param indexPrefix 作成時に設定したIndexのPrefix値 | |
2641 | + * @param indexLength 作成時に指定した作成Indexの長さ指定 | |
2642 | + * @return boolean 削除成否 | |
2643 | + */ | |
2644 | + public function removeSearchIndex($keyStr, $indexPrefix = null, $indexLength = 3) { | |
2645 | + $ret = false; | |
2646 | + $serverRetStr = null; | |
2647 | + $serverRet = null; | |
2648 | + $serverRequestBuf = null; | |
2649 | + try { | |
2650 | + // Byte Lenghtチェック | |
2651 | + if ($this->checkStrByteLength($keyStr) > $this->maxKeySize) throw new OkuyamaClientException("Save Key Max Size " . $this->maxKeySize . " Byte"); | |
2652 | + if ($tagStr != null) { | |
2653 | + if ($this->checkStrByteLength($tagStr) > $this->maxKeySize) throw new OkuyamaClientException("Tag Max Size " . $this->maxKeySize . " Byte"); | |
2654 | + } | |
2655 | + | |
2656 | + if ($this->socket == null) throw new OkuyamaClientException("No ServerConnect!!"); | |
2657 | + | |
2658 | + // エラーチェック | |
2659 | + // Keyに対する無指定チェック | |
2660 | + if ($keyStr == null || $keyStr === "") { | |
2661 | + throw new OkuyamaClientException("The blank is not admitted on a key"); | |
2662 | + } | |
2663 | + | |
2664 | + | |
2665 | + | |
2666 | + // 文字列バッファ初期化 | |
2667 | + $serverRequestBuf = ""; | |
2668 | + | |
2669 | + | |
2670 | + // 処理番号連結 | |
2671 | + $serverRequestBuf = "44"; | |
2672 | + | |
2673 | + // セパレータ連結 | |
2674 | + $serverRequestBuf = $serverRequestBuf . $this->sepStr; | |
2675 | + // Key連結(Keyはデータ送信時には必ず文字列が必要) | |
2676 | + $serverRequestBuf = $serverRequestBuf. $this->dataEncoding($keyStr); | |
2677 | + | |
2678 | + // セパレータ連結 | |
2679 | + $serverRequestBuf = $serverRequestBuf . $this->sepStr; | |
2680 | + // TransactionCode連結 | |
2681 | + $serverRequestBuf = $serverRequestBuf . $this->transactionCode; | |
2682 | + | |
2683 | + // セパレータ連結 | |
2684 | + $serverRequestBuf = $serverRequestBuf . $this->sepStr; | |
2685 | + // プレフィックスを有無に合わせて連結 | |
2686 | + if ($indexPrefix == null || $indexPrefix === "") { | |
2687 | + | |
2688 | + // ブランク規定文字列を連結 | |
2689 | + $serverRequestBuf = $serverRequestBuf . $this->blankStr; | |
2690 | + } else { | |
2691 | + | |
2692 | + // Indexプレフィックス連結 | |
2693 | + $serverRequestBuf = $serverRequestBuf . $this->dataEncoding($indexPrefix); | |
2694 | + } | |
2695 | + | |
2696 | + // セパレータ連結 | |
2697 | + $serverRequestBuf = $serverRequestBuf . $this->sepStr; | |
2698 | + // createIndexLen連結 | |
2699 | + $serverRequestBuf = $serverRequestBuf . $indexLength; | |
2700 | + | |
2701 | + | |
2702 | + // サーバ送信 | |
2703 | + @fputs($this->socket, $serverRequestBuf . "\n"); | |
2704 | + | |
2705 | + $serverRetStr = @fgets($this->socket); | |
2706 | + | |
2707 | + $serverRetStr = str_replace("\r", "", $serverRetStr); | |
2708 | + $serverRetStr = str_replace("\n", "", $serverRetStr); | |
2709 | + $serverRet = explode($this->sepStr, $serverRetStr); | |
2710 | + | |
2711 | + // 処理の妥当性確認 | |
2712 | + if ($serverRet[0] === "44") { | |
2713 | + if ($serverRet[1] === "true") { | |
2714 | + | |
2715 | + // 処理成功 | |
2716 | + $ret = true; | |
2717 | + } else{ | |
2718 | + | |
2719 | + // 処理失敗(データなし) | |
2720 | + $ret = false; | |
2721 | + } | |
2722 | + } else { | |
2723 | + if ($this->masterNodesList != null && count($this->masterNodesList) > 1) { | |
2724 | + if($this->autoConnect()) { | |
2725 | + $ret = $this->removeSearchIndex($keyStr, $indexPrefix, $indexLength); | |
2726 | + } | |
2727 | + } else { | |
2728 | + | |
2729 | + // 妥当性違反 | |
2730 | + throw new OkuyamaClientException("Execute Violation of validity"); | |
2731 | + } | |
2732 | + } | |
2733 | + } catch (OkuyamaClientException $oe) { | |
2734 | + throw $oe; | |
2735 | + } catch (Exception $e) { | |
2736 | + if ($this->masterNodesList != null && count($this->masterNodesList) > 1) { | |
2737 | + if($this->autoConnect()) { | |
2738 | + $ret = $this->removeSearchIndex($keyStr, $indexPrefix, $indexLength); | |
2739 | + } | |
2740 | + } else { | |
2741 | + | |
2742 | + throw $e; | |
2743 | + } | |
2744 | + } | |
2745 | + return $ret; | |
2746 | + } | |
2747 | + | |
2748 | + | |
2749 | + /** | |
2448 | 2750 | * マスタサーバからKeyでデータを取得する(バイナリ).<br> |
2449 | 2751 | * |
2450 | 2752 | * @param keyStr |
@@ -1,11 +1,11 @@ | ||
1 | 1 | rem キー値を自動でインクリメントして10個登録 |
2 | -php PhpTestSock.php 1 127.0.0.1 8888 10 | |
2 | +php PhpTestSock.php 1 127.0.0.1 8888 100 | |
3 | 3 | rem キー値をkey_aでバリュー値value_bを登録 |
4 | 4 | php PhpTestSock.php 1.1 127.0.0.1 8888 key_a value_b |
5 | 5 | rem キー値をkey_aでバリュー値value_cを登録-有効期限テスト |
6 | 6 | php PhpTestSock.php 1.2 127.0.0.1 8888 key_c value_c 3 |
7 | 7 | rem キー値を自動でインクリメントして10個valueを取得 |
8 | -php PhpTestSock.php 2 127.0.0.1 8888 10 | |
8 | +php PhpTestSock.php 2 127.0.0.1 8888 100 | |
9 | 9 | rem キー値をkey_aでvalueを取得 |
10 | 10 | php PhpTestSock.php 2.1 127.0.0.1 8888 key_a |
11 | 11 | rem キー値をkey_aで取得したvalueに対してJavaScriptを実行 |
@@ -14,8 +14,12 @@ | ||
14 | 14 | php PhpTestSock.php 2.4 127.0.0.1 8888 key_a "var dataValue; var dataKey; var retValue = dataValue.replace('b', 'dummy'); if(dataKey == 'key_a') {var execRet = '2'} else {var execRet = '1'}" |
15 | 15 | rem キー値をkey_aでバリュー値value_dを登録-有効期限設定を行って有効期限到達前に更新での取得 |
16 | 16 | php PhpTestSock.php 2.5 127.0.0.1 8888 key_d value_d 3 |
17 | +rem キー値を複数指定してkeyとvalueの集合を取得 | |
18 | +php PhpTestSock.php 2.6 127.0.0.1 8888 | |
19 | +rem キー値をkey_objでバリュー値Objectを登録-有効期限設定を行って有効期限到達前に更新での取得 | |
20 | +php PhpTestSock.php 2.7 127.0.0.1 8888 key_obj 3 | |
17 | 21 | rem Tag値を自動で変えて、KeyとValueを10回登録 |
18 | -php PhpTestSock.php 3 127.0.0.1 8888 10 | |
22 | +php PhpTestSock.php 3 127.0.0.1 8888 100 | |
19 | 23 | rem Tag値をtag1を指定して、tag1に属するKey値を取得(Key値存在指定有り(true)) |
20 | 24 | php PhpTestSock.php 4 127.0.0.1 8888 tag1 true |
21 | 25 | rem Tag値をtag1を指定して、tag1に属するKey値を取得(Key値存在指定有り(false)) |
@@ -31,23 +35,29 @@ | ||
31 | 35 | rem 値の新規登録をおこなう-有効期限あり |
32 | 36 | php PhpTestSock.php 10.1 127.0.0.1 8888 newkeyT newvalueT 3 |
33 | 37 | rem cas |
34 | -php PhpTestSock.php 12 127.0.0.1 8888 newkey value_cas 0 | |
38 | +php PhpTestSock.php 12 127.0.0.1 8888 newkey valuecas 0 | |
35 | 39 | rem cas Miss |
36 | -php PhpTestSock.php 12 127.0.0.1 8888 newkey value_cas 1 | |
40 | +php PhpTestSock.php 12 127.0.0.1 8888 newkey valuecas 1 | |
37 | 41 | rem cas Tag |
38 | -php PhpTestSock.php 13 127.0.0.1 8888 newkey value_cas tag1 2 | |
42 | +php PhpTestSock.php 13 127.0.0.1 8888 newkey valuecas tag1 2 | |
39 | 43 | rem gets |
40 | 44 | php PhpTestSock.php 11 127.0.0.1 8888 newkey |
41 | 45 | rem incr |
42 | -php PhpTestSock.php 12 127.0.0.1 8888 newkey 1 | |
46 | +php PhpTestSock.php 20 127.0.0.1 8888 newkey 1 | |
43 | 47 | rem incr |
44 | -php PhpTestSock.php 12 127.0.0.1 8888 newkey 109 | |
48 | +php PhpTestSock.php 20 127.0.0.1 8888 newkey 109 | |
45 | 49 | rem decr |
46 | -php PhpTestSock.php 13 127.0.0.1 8888 newkey 1 | |
50 | +php PhpTestSock.php 21 127.0.0.1 8888 newkey 1 | |
47 | 51 | rem decr |
48 | -php PhpTestSock.php 13 127.0.0.1 8888 newkey 109 | |
52 | +php PhpTestSock.php 21 127.0.0.1 8888 newkey 109 | |
49 | 53 | rem removeTagFromkey |
50 | 54 | php PhpTestSock.php 22 127.0.0.1 8888 datasavekey_46 tag1 |
55 | +rem setObjectValue | |
56 | +php PhpTestSock.php 23 127.0.0.1 8888 objectKey1 | |
57 | +rem getObjectValue | |
58 | +php PhpTestSock.php 24 127.0.0.1 8888 objectKey1 | |
59 | +rem getObjectValue | |
60 | +php PhpTestSock.php 24 127.0.0.1 8888 objectKey2 | |
51 | 61 | rem setValueAndCreateIndex |
52 | 62 | php PhpTestSock.php 42 127.0.0.1 8888 1000 |
53 | 63 | rem searchValue |
@@ -56,3 +66,5 @@ | ||
56 | 66 | php PhpTestSock.php 42.1 127.0.0.1 8888 1000 Prefix1 |
57 | 67 | rem searchValue |
58 | 68 | php PhpTestSock.php 43.1 127.0.0.1 8888 "7" "716" 2 "Prefix1" |
69 | +rem removeSearchIndex | |
70 | +php PhpTestSock.php 44 127.0.0.1 8888 "datavaluestr_716" 1 "" |
@@ -10,8 +10,7 @@ | ||
10 | 10 | // 4.実行回数:0〜n(実行モード1.1及び2.1及び2.3及び3及び8時は登録、取得、削除したいKey or Tag値) |
11 | 11 | // 5.登録データ:(実行モード1.1及び2.3時のみ有効 1.1時は登録したいValue値、2.3時は実行したいJavaScript) |
12 | 12 | |
13 | - require_once("OkuyamaClient.class.php"); | |
14 | - | |
13 | + require_once("OkuyamaClient.class.php"); | |
15 | 14 | if ($argc > 3) { |
16 | 15 | |
17 | 16 | // クライアント作成 |
@@ -116,6 +115,17 @@ | ||
116 | 115 | $searchWordList[0] = $argv[4]; |
117 | 116 | $searchWordList[1] = $argv[5]; |
118 | 117 | var_dump($client->searchValue($searchWordList, $argv[6])); |
118 | + } else if ($argv[1] === "44") { | |
119 | + | |
120 | + | |
121 | + // データを検索Indexを削除 | |
122 | + var_dump($client->removeSearchIndex("datasavekey_716")); | |
123 | + | |
124 | + $searchWordList = array(); | |
125 | + $searchWordList[0] = $argv[4]; | |
126 | + | |
127 | + var_dump($client->searchValue($searchWordList, $argv[5], $argv[6])); | |
128 | + | |
119 | 129 | } else if ($argv[1] === "2") { |
120 | 130 | |
121 | 131 | // データを引数の回数分取得 |
@@ -185,6 +195,89 @@ | ||
185 | 195 | } |
186 | 196 | } |
187 | 197 | |
198 | + } else if ($argv[1] === "2.6") { | |
199 | + $client->setValue("key_multi_1", "val_multi_1"); | |
200 | + $client->setValue("key_multi_2", "val_multi_2"); | |
201 | + $client->setValue("key_multi_3", "val_multi_3"); | |
202 | + $client->setValue("key_multi_4", "val_multi_4"); | |
203 | + $client->setValue("key_multi_5", "val_multi_5"); | |
204 | + | |
205 | + $getMKeyList1 = array(); | |
206 | + $getMKeyList1[] = "key_multi_1"; | |
207 | + $getMKeyList1[] = "key_multi_2"; | |
208 | + $getMKeyList1[] = "key_multi_3"; | |
209 | + $getMKeyList1[] = "key_multi_4"; | |
210 | + $getMKeyList1[] = "key_multi_5"; | |
211 | + var_dump($client->getMultiValue($getMKeyList1)); | |
212 | + | |
213 | + $getMKeyList2 = array(); | |
214 | + $getMKeyList2[] = "key_multi_4"; | |
215 | + $getMKeyList2[] = "key_multi_3"; | |
216 | + var_dump($client->getMultiValue($getMKeyList2)); | |
217 | + | |
218 | + | |
219 | + $getMKeyList3 = array(); | |
220 | + $getMKeyList3[] = "key_multi_3"; | |
221 | + $getMKeyList3[] = "key_multi_aaa"; | |
222 | + $getMKeyList3[] = "key_multi_bbb"; | |
223 | + $getMKeyList3[] = "key_multi_ccc"; | |
224 | + var_dump($client->getMultiValue($getMKeyList3)); | |
225 | + | |
226 | + $getMKeyList4 = array(); | |
227 | + $getMKeyList4[] = "key_multi_xxx"; | |
228 | + $getMKeyList4[] = "key_multi_aaa"; | |
229 | + $getMKeyList4[] = "key_multi_bbb"; | |
230 | + $getMKeyList4[] = "key_multi_ccc"; | |
231 | + var_dump($client->getMultiValue($getMKeyList4)); | |
232 | + | |
233 | + | |
234 | + $getMKeyList5 = array(); | |
235 | + $getMKeyList5[] = "key_multi_3"; | |
236 | + $getMKeyList5[] = "key_multi_aaa"; | |
237 | + $getMKeyList5[] = "key_multi_bbb"; | |
238 | + $getMKeyList5[] = "key_multi_ccc"; | |
239 | + $getMKeyList5[] = "key_multi_1"; | |
240 | + var_dump($client->getMultiValue($getMKeyList5)); | |
241 | + | |
242 | + | |
243 | + $getMKeyList6 = array(); | |
244 | + $getMKeyList6[] = "key_multi_1"; | |
245 | + $getMKeyList6[] = ""; | |
246 | + $getMKeyList6[] = ""; | |
247 | + $getMKeyList6[] = ""; | |
248 | + $getMKeyList6[] = "key_multi_"; | |
249 | + var_dump($client->getMultiValue($getMKeyList6)); | |
250 | + } else if ($argv[1] === "2.7") { | |
251 | + // 指定のKey値でObjectを取得 | |
252 | + // 有効期限を自動的に更新する | |
253 | + // データを有効期限付きで登録 | |
254 | + $setObj4ExTime = array(); | |
255 | + $setObj4ExTime[] = "aaxx"; | |
256 | + $setObj4ExTime[] = "bbyy"; | |
257 | + $setObj4ExTime[] = array(); | |
258 | + | |
259 | + if(!$client->setObjectValue($argv[4], $setObj4ExTime, null, $argv[5])) { | |
260 | + | |
261 | + print_r("Regist Error"); | |
262 | + } else { | |
263 | + | |
264 | + sleep(intval($argv[5]) - 1); | |
265 | + $ret = $client->getObjectValueAndUpdateExpireTime($argv[4]); | |
266 | + sleep(1); | |
267 | + $ret = $client->getObjectValue($argv[4]); | |
268 | + if ($ret[0] === "false") { | |
269 | + print_r("ExpireTimeUpdateGet Error"); | |
270 | + print_r("\r\n"); | |
271 | + print_r($ret[1]); | |
272 | + print_r("\r\n"); | |
273 | + } else if ($ret[0] === "true") { | |
274 | + print_r("ExpireTimeUpdateGet OK"); | |
275 | + print_r("\r\n"); | |
276 | + var_dump($ret[1]); | |
277 | + print_r("\r\n"); | |
278 | + } | |
279 | + } | |
280 | + | |
188 | 281 | } else if ($argv[1] === "3") { |
189 | 282 | |
190 | 283 | // データを引数の回数分登録(Tagを登録) |
@@ -362,6 +455,18 @@ | ||
362 | 455 | |
363 | 456 | // Tag削除 |
364 | 457 | var_dump($client->removeTagFromKey($argv[4], $argv[5])); |
458 | + } else if ($argv[1] === "23") { | |
459 | + // Object登録 | |
460 | + $setObj = array(); | |
461 | + $setObj[0] = ""; | |
462 | + $setObj[1] = "aaa"; | |
463 | + $setObj[2] = "bbb"; | |
464 | + $setObj[3] = array(); | |
465 | + | |
466 | + var_dump($client->setObjectValue($argv[4], $setObj)); | |
467 | + } else if ($argv[1] === "24") { | |
468 | + // Object取得 | |
469 | + var_dump($client->getObjectValue($argv[4])); | |
365 | 470 | } |
366 | 471 | |
367 | 472 |