PHP自定义session.serialize_handler JSON

我需要在Node.js中访问PHP会话,所以我认为一个好主意是将会话编码为JSON,并将其解码为Node.js.

我知道我可以设置session.save_handler = memcached但有没有办法设置session.serialize_handler = some_json_handler ? 或者我必须使用session_set_save_handler自己编码?

任何帮助非常感谢!

我有同样的要求。 我正在使用龙卷风,需要访问python中的php会话。 按照这个链接https://github.com/lboynton/memcached-json-session-save-handler/blob/master/library/Lboy/Session/SaveHandler/Memcached.php 。 希望这可以帮助。

我已经得到了与couchbase的工作,至less是一个概念的certificate。 你可能想尝试这个https://github.com/msgpack/msgpack-php和node.js等价。 这应该看你的权利。

代码已经在phalcon中,因此可能对你的目的没有用处,但是为了完整起见( $this->_instance()返回一个couchbase / memcache实例)

 \ini_set('session.serialize_handler', 'msgpack'); 

并在会话处理程序中

 public function read($sessionId){ $data = $this->_instance()->get($this->_getSessionId($sessionId), $this->getOption('lifetime')); if(!empty($data)){ $data = json_decode($data, true); return \msgpack_pack($data); } return ''; } public function write($sessionId, $data){ session_decode($data); $serializedData = json_encode($_SESSION); $this->_instance()->save($this->_getSessionId($sessionId), $serializedData, $this->getOption('lifetime')); } 

我无法让msgpack与phalcon / couchbase / node一起正常工作,因为会话的工作量只有很小的百分比,还需要学习节点,编写应用程序以查明它是否可以我们想要什么;)

我使用msgpack,因为我无法使用session_encode()在我的PHP出于某种原因,可能由于MVC的实现

节点JS的东西 – 它使用快递,而且是我第一次尝试在节点,这样记住:)

 var memcache = require("memcache"); var client = new memcache.Client(11211, "localhost"); client.connect(); client.get("/sessions/"+req.cookies.PHPSESSID, function(error, result){ if(typeof(error)==="undefined"){ var session = JSON.parse(result); console.log('session : ',session); res.render('view/name', { title: 'Express' , sessionData: session}); }