1
A
回答
0
我不知道,如果你还在寻找答案(能帮助别人也是如此),但这里的解释序列化和反序列化一个很好的链接(https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/) 会话数据为json。我已经在Codeigniter的库Session_redis_driver.php中进行了修改,以便编码和解码,因此我可以在Nodejs中使用它。如果有人能验证此代码并指出任何陷阱或未处理的异常,我会很高兴。
修改在 “读” 方法
public function read($session_id) { if (isset($this->_redis) && $this->_get_lock($session_id)) { // Needed by write() to detect session_regenerate_id() calls $this->_session_id = $session_id; $session_data = json_decode($this->_redis->get($this->_key_prefix.$session_id),TRUE); is_array($session_data) ? $this->_key_exists = TRUE : $session_data = ''; $this->_fingerprint = md5(json_encode($session_data)); $tmp = $_SESSION; $_SESSION = $session_data; $new_data = session_encode(); $_SESSION = $tmp; return $new_data; } return $this->_fail(); }
到目前为止,这是工作无异常。
在写入方法中进行了以下更改。
if (isset($this->_lock_key)) { $this->_redis->setTimeout($this->_lock_key, 300); $tmp = $_SESSION; session_decode($session_data); $new_data = $_SESSION; $_SESSION = $tmp; if ($this->_fingerprint !== ($fingerprint = md5(json_encode($new_data))) OR $this->_key_exists === FALSE) { if ($this->_redis->set($this->_key_prefix.$session_id, json_encode($new_data), $this->_config['expiration'])) { $this->_fingerprint = $fingerprint; $this->_key_exists = TRUE; return $this->_success; } return $this->_fail(); } return ($this->_redis->setTimeout($this->_key_prefix.$session_id, $this->_config['expiration'])) ? $this->_success : $this->_fail(); }
相关问题
- 1. 用于会话存储的Redis
- 2. 我可以使用cassandra(2.0.3)作为php会话存储(例如vs vs redis)吗?
- 3. 使用redis作为会话存储
- 4. 使用Amazon ElastiCache redis来存储会话
- 5. 用expresso - redis会话存储测试node.js
- 6. 使用Redis存储的快速会话无法创建会话
- 7. heroku上的Redis会话存储
- 8. 使用Express/Redis进行会话存储时'会话'未定义
- 9. 快速会话不使用表达式会话存储在redis中 - 连接redis
- 10. Redis与Hazelcast作为会话存储
- 11. 如何在redis中存储JSF会话?
- 12. cakephp除了会话redis存储
- 13. 我应该怎么做,以数据存储会话用Connect-Redis的
- 14. 存储和会话
- 15. 存储节点使用Azure Redis缓存的JS express会话
- 16. express:会话存储,查询会话密钥redis
- 17. 我可以使用MongoDB在Symfony 2中存储会话吗?
- 18. 我可以在会话存储中使用parseInt吗?
- 19. Rails:从活动记录会话存储转移到Redis存储
- 20. 的Redis作为会话存储,无效的用户的所有会话
- 21. 本地和会话存储可以在html 4中使用吗?
- 22. Nodejs + Passport.js + Redis:如何在Redis中存储会话
- 23. 我可以更改会话存储的根目录吗?
- 24. 使用Redis的工作来存储会话 - Django的
- 25. 我们可以在angularjs中使用会话和本地存储吗?
- 26. 我可以使用StackExchange.Redis在Redis中存储空值吗?
- 27. 本地存储和会话存储
- 28. 如何使用Redis将多个会话存储到用户?
- 29. 我可以将会话信息存储在websocket服务器
- 30. 我可以在会话变量中存储脚本字典吗?
简短的回答是 '是'。有一个PHP库,你会需要,但除此之外,你应该罚款。 – Jerry