Redis
 sql >> база данни >  >> NoSQL >> Redis

Споделяне на сесии между php и node

За възел (и Express 4.x):

Започнете с примера от express-session, но вместо това използвайте connect-redis като хранилище за сесии.

Примерен код:

var express = require('express'),
    app = express(),
    cookieParser = require('cookie-parser'),
    session = require('express-session'),
    RedisStore = require('connect-redis')(session);

app.use(express.static(__dirname + '/public'));
app.use(function(req, res, next) {
  if (req.url.indexOf('favicon') > -1)
    return res.send(404);
  next();
});
app.use(cookieParser());
app.use(session({
  store: new RedisStore({
    // this is the default prefix used by redis-session-php
    prefix: 'session:php:'
  }),
  // use the default PHP session cookie name
  name: 'PHPSESSID',
  secret: 'node.js rules'
}));
app.use(function(req, res, next) {
  req.session.nodejs = 'Hello from node.js!';
  res.send(JSON.stringify(req.session, null, '  '));
});

app.listen(8080);

За PHP:

Използвайте манипулатор на сесия на redis като redis-session-php.

Примерен код:

<?php

// from https://github.com/TheDeveloper/redis-session-php
require('redis-session-php/redis-session.php');
RedisSession::start();

$_SESSION["php"] = "Hello from PHP";

// `cookie` is needed by express-session to store information
// about the session cookie
if (!isset($_SESSION["cookie"]))
  $_SESSION["cookie"] = array();

var_dump($_SESSION);

?>

Забележка:Уверете се, че използвате същия prefix (connect-redis)/REDIS_SESSION_PREFIX (redis-session-php) (connect-redis използва 'sess:' и redis-session-php използва 'session:php:' по подразбиране) и ttl (connect-redis)/session.gc_maxlifetime (PHP) (и същата база данни, ако използвате база данни redis, различна от тази по подразбиране) както за redis-session-php, така и за connect-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Получаване на Redis Master адрес от Sentinel C#

  2. Искате да внедрите уеб сокети в Laravel

  3. Поведение на Redis с множество едновременни програми, извършващи четене/делене на един и същ хеш ключ

  4. Как да изградите изображение на docker от хранилището на github

  5. разгръщането на redis към heroku не може да се свърже