2014-04-07 72 views
0

我存儲我的PHP會議在Redis的作爲JSON字符串的會話與node.js的分享他們喜歡在這裏完成:存儲PHP會話中的Redis爲JSON,讀

http://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/

我不喜歡的是這些函數將會話存儲在磁盤和redis中。我只是想讓他們在redis中。作爲json。

我認爲這將是很容易改變這一點,我想這是,但我不知道如何。

我不能使用session_encode();在一個特定的變量。我是否需要序列化unserialze?讀取功能必須返回什麼格式?

public function read($id) { 

    $id = $this->_prefix . $id; 

    try { 

     $r = $this->__rc 
      ->multi() 
      ->get($id) 
      ->expire($id, $this->ttl) 
      ->exec(); 

    } catch (\RedisException $e) { return false; } 


    $tmp  = $_SESSION; 
    $_SESSION = json_decode($r[0], true); 

    if(isset($_SESSION) && ! empty($_SESSION) && $_SESSION != null){ 

     $new_data = session_encode(); 
     $_SESSION = $tmp; 
     return $new_data; 

    } 

    else{ 

     return ''; 

    } 

} 

public function write($id, $data) { 

    $tmp = $_SESSION; 
    session_decode($data); 
    $new_data = $_SESSION; 
    $_SESSION = $tmp; 

    $id = $this->_prefix . $id; 

    try{ 

     $this->__rc 
      ->multi() 
      ->set($id, json_encode($new_data)) 
      ->expire($id, $this->ttl) 
      ->exec(); 

    } catch (\RedisException $e) { return false; } 

    return true; 

} 

回答

1

爲了僅在Redis中保存會話而不是在磁盤上,您需要更改存儲會話的設置,如php.ini,如session_save路徑。