我刚刚在我的debian服务器上设置了memcached以在nodejs(聊天服务器)和PHP(网站)之间交换会话。这就是我现在所走的距离。
我已配置PHP将会话详细信息保存在memcached中并运行此脚本。
<?php
error_reporting(E_ALL);
session_start();
$_SESSION['some'] = 'thing';
echo session_id()."\n";
print_r($_SESSION);
我也尝试通过memcached-tool获取数据
/usr/share/memcached/scripts/memcached-tool localhost:11211 dump
在与梨相关的一些错误之后,我得到了这个输出(除非有人说nodejs意外地使用了Pearl,否则我不会发布它们)
Dumping memcache contents
桶数:1 件数:1 自卸斗2-1共1件 添加memc.sess.etnq8q744bdc6srknrdu78a5e4 0 1535915171 17 some | s:5:“事物”;
所以我想它到目前为止已经奏效了。现在我写了这个nodejs脚本
const cookie = require('cookie');
const Memcached = require('memcached');
const PHPUnserialize = require('php-unserialize');
var mem = new Memcached('127.0.0.1:11211');
mem.set('foo', 'dass',100,function(err){
console.log('Error1:'+err);
});
mem.get('foo', function(err, data) {
console.log('Error:'+err);
console.log('Data'+data);
});
var PHPSESSID = cookie.parse(socket.request.headers.cookie).P$
console.log(PHPSESSID);
mem.get(PHPSESSID, function(err, data){
if(err) return console.error(err);
if(data===false)return console.error('could not retreive $
console.log('raw data:',data);
});
不幸的是,我得到了之前设置的值“ dass”,但其他所有值均未定义
etnq8q744bdc6srknrdu78a5e4
output send
Error1:undefined
Error:undefined
Datadass
raw data: undefined
我认为连接到内存缓存服务器的方式或位置必须有任何区别。但是我找不到执行此操作的任何代码。我也看不到使用memcached-tool
插入的nodejs值这些只是抠图。完整的代码和完整的输出在这里
代码 https://pastebin.com/3uQqZFai
输出 https://pastebin.com/991ebxfq
在添加memcached之前,代码可以正常工作。现在它也很麻烦,但是内存缓存部分。 我也使用工作中的客户端进行连接以触发memcached部分。而且我也知道这段代码并不完美。我仍然致力于理解全部内容。 P