Predis ライブラリを使用して、Cakephp の $_SESSION の JSON 表現 (json_encode) を Redis に保存しようとしています。
$_SESSION raw は次のとおりです。
{ ["Config"]=> array(3) { ["userAgent"]=> string(32) "ebbd08f362083e95a8eb3bd1d4712648" ["time"]=> int(1368391599) ["countdown"]=> int(10) } ["Auth"]=> array(1) { ["User"]=> array(24) { ["id"]=> string(2) "93" ["user_group_id"]=> string(1) "1" ["first_name"]=> string(5) "James" ["about"]=> NULL ["phone"]=> NULL ["img_path"]=> string(28) "93_1368161032_1368161032.jpg" ["score"]=> string(4) "0.00" ["active"]=> string(1) "0" ["created"]=> NULL ["modified"]=> string(19) "2013-03-13 04:14:36" ["fbid"]=> string(1) "0" ["twid"]=> NULL ["location"]=> string(0) "" ["hometown"]=> string(0) "" ["iteneraries"]=> string(1) "2" ["place_visited"]=> string(1) "0" ["reviews"]=> string(1) "0" ["isName"]=> bool(false) ["isAddress"]=> bool(false) ["invite_code"]=> string(7) "SK47SLE" } } }
json_decode の後:
{"Config":{"userAgent":"ebbd08f362083e95a8eb3bd1d4712648","time":1368391599,"countdown":10},"Auth":{"User":{"id":"93","user_group_id":"1","first_name":"James","about":null,"phone":null,"img_path":"93_1368161032_1368161032.jpg","score":"0.00","active":"0","created":null,"modified":"2013-03-13 04:14:36","fbid":"0","twid":null,"location":"","hometown":"","iteneraries":"2","place_visited":"0","reviews":"0","isName":false,"isAddress":false,"invite_code":"SK47SLE"}}}
redis に関連するコード設定値:
public function write($id, $data) {
$tmp = $_SESSION;
session_decode($data);
$tmp_data = json_encode($_SESSION);
$_SESSION = $tmp;
$this->_client->set($id, $tmp_data);
}
set を呼び出した後に redis をチェックすると、この部分だけが保存されます。
{"Config":{"userAgent":"ebbd08f362083e95a8eb3bd1d4712648","time":1368391599,"countdown":10}}
残りの JSON データは切り捨てられ、redis に保存されません。これには何が問題なのですか?JSON を redis に設定する際に見逃しているものはありますか。