返回首页 - Notes - 2014

PHP 集群下的 Session 共享


Nginx的配置

http {
    upstream backend {
        server 192.168.1.1:8000 weight=3;
        server 192.168.1.2:8001;
        server 192.168.1.3:8002;
        server 192.168.1.4:8003;
    }

    server {
        listen 80;
        server_name www.example.com;
        location / {
            proxy_pass http://backend;
        }
    }
}

Session的存储方式

  1. Cookie:缺点是可存储的数据类型有限,数据大小受限,安全性不高,网络传输、解压缩开销较大
  2. 网络服务器(NFS):缺点是高并发读写性能不高,硬盘 I/O 和网络带宽上存在瓶颈
  3. 数据库:缺点是会加大数据库 I/O,增加数据库负担,且数据库读写速度较慢,不利于 Session 的实时同步
  4. Memcached/Redis:优点是可扩展性高,读写速度快,最优选择

使用缓存服务器存储Session的配置方式

  1. Redis
    ini_set('session.save_handler', 'redis');
    ini_set('session.save_path', 'tcp://x.y.z.a?timeout=0.5,tcp://x.y.z.b?timeout=0.5');
    
  2. Memcached扩展
    ini_set('session.save_handler', 'memcached');
    ini_set('session.save_path', 'x.y.z.a:11211,x.y.z.b:11211');
    
  3. Memcache扩展
    ini_set('session.save_handler', 'memcache');
    ini_set('session.save_path', 'tcp://x.y.z.a:11211');
    

date : 2014-11-19