我认为这个链接对你有所帮助 https://simplapi.wordpress.com/2012/04/11/php-nodejs-session-share-memcache/
如果您的项目将会话存储在数据库中 - 有些会这样做 - 那么您可以考虑使用数据库作为传输介质。
如果您的特定情况下的分析显示了promise,那么可以使用node-mysql(或类似的) - 请参阅: 链接
虽然线程很旧,但我想推荐一下我用于项目的内容。 您也可以使用Redis进行会话处理,而不是memcached。 我用过了 phpredis 作为php redis client。而不是将会话存储到文件,您可以保存在Redis中。大部分繁重的工作将由阿帕奇完成。对于每个请求,apache会将会话值附加到cookie。它会从每个请求中读取会话值并对其进行验证。
将php会话保存到redis所需的设置也非常简单。
session.save_handler = redis session.save_path =“tcp:// host1:6379?weight = 1,tcp:// host2:6379?weight = 2& timeout = 2.5,tcp:// host3:6379?weight = 2”
就是这样。这将使php将会话保存为redis而不是文件。这也会将存储在文件中的会话移动到redis。
答案来自 zamnuts 帮我做了认证,是我已经采取的方法。感谢那。
我发布的原因是我使用时的一些原因:
var PHPUnserialize = require('php-unserialize');
保持给我错误
SyntaxError: String length mismatch
我不知道为什么?我写了一个功能,为我完成工作,并希望分享,以防它可以帮助别人。
function Unserialize(data){ var result = {}; if(data !== undefined){ var preg = data.replace(/(^|s:[0-9]+:)|(^|i:)|(^|b:)|(")|(;$)/g,'').split(';'); var a = []; preg.forEach(function(value){ a.push(value.split('|')); }); var b = []; a.forEach(function(value){ if(Array.isArray(value)){ Array.prototype.push.apply(b, value); }else{ b.push(value); } }); var arr_A = []; var arr_B = []; b.forEach(function(value, k){ if(k % 2 == 0){ arr_A.push(value); }else{ arr_B.push(value); } }); if (arr_A == null) return {}; for (var i = 0, l = arr_A.length; i < l; i++) { if (arr_B) { result[arr_A[i]] = arr_B[i]; } else { result[arr_A[i][0]] = arr_A[i][1]; } } } return result; }
我只是这样称呼它:
var PHPUnserialize = Unserialize; memcached.get(key, function(err, data){ var memData = PHPUnserialize(data); console.log(memData.is_logged_in); });
您应该能够相当容易地修改正则表达式以满足您的需求。