sql >> データベース >  >> NoSQL >> Redis

PHPとノード間でセッションを共有する

    ノード(および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-session-phpのようなredisセッションハンドラーを使用します。

    コード例:

    <?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. マングースで配列値を更新する方法

    2. Meteor本番データベースへのアクセス

    3. nodeJSを使用してgridFSに保存されたファイルをダウンロードする方法

    4. MongoDBとCassandra