Я только что установил memcached на своем сервере Debian для обмена сессиями между nodejs (Chat Server) и PHP (Website). Так вот, как далеко я сейчас ушел.
Я настроил 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
Я получил этот вывод после некоторых ошибок, связанных с pear (я не буду публиковать их, если кто-то не скажет, что nodejs неожиданно использует pearl)
Dumping memcache contents
Количество ковшей: 1
Количество предметов: 1
Ковш 2 - 1 всего
добавить memc.sess.etnq8q744bdc6srknrdu78a5e4 0 1535915171 17
некоторые | 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. Но я не могу найти никакого кода, делающего это. Я также не могу видеть вставленные значения nodejs с memcached-tool
Это только вырезы. Полный код и полный вывод здесь
код
https://pastebin.com/3uQqZFai
Выход
https://pastebin.com/991ebxfq
Код работал совершенно нормально до добавления memcached. Также это работает теперь, но memcached часть.
Также я использовал рабочий клиент для подключения, чтобы вызвать memcached часть. И я также знаю, что этот код не является совершенным. Я все еще работаю над пониманием всего этого. P