我已经让它与 couchbase 一起使用,至少是一个概念证明。你可能想试试这个https://github.com/msgpack/msgpack-php 和node.js equiv。那应该是正确的。
代码在 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 是因为由于某种原因我无法在我的 php 中使用 session_encode(),这可能是由于 MVC 实现
node JS 的东西 - 它使用 express,并且是我第一次尝试 node,所以请记住 :)
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});
}