zoukankan      html  css  js  c++  java
  • session,cookie总结

    不同的域名生成的session_id是不一样的,(就算是相同的主域,例如:www.test.com, blog.test.com 都不一样);

    相同的主域,不同的二级域名,例如www和blog都是不共享cookie的,要如何共享呢?

    setcookie("age", "1000000000", time()+3600,'/','test.com');  //这里指定主域的地址,这样,其二级域名就都可以访问这个cookie了。

    那么二级域名之间是如何共享session的呢?

    session的读取是根据session_id来从session的存储位置来读取的,那么如果在www和test之间能传递session_id那不就是可以共享session了?

    比如在www目录下面有index.php 的代码

    <?php
    session_start();
    setcookie("age", "1000000000", time()+3600,'/','test.com'); 

    $session_id = session_id();

    setcookie("PHPSESSID", $session_id, time()+3600,'/','maxomnis.com');       //这里的PHPSESSID为session_id默认的存储的名字,如果php.ini修改了这里也要修改;

    那么在blog目录下面的index.php如下的代码, 就可以去取到上面的age值了

    <?php
    session_start();
    var_dump($_COOKIE);

    不过首先上面的情况是www,blog都是在同一台服务器上,因为都是共用的同一台服务器,并且是同一个php-fpm所以能访问同一个路径下存储的session文件;

    那如果www.test.com, blog.test.com两个是不同的服务器,那怎么共享session呢?

    1.session都存在数据库里面,两个应用都访问同一个数据库,那么这样就可以解决共享的问题了, disucz, phpcms都是用的这种做法, 这种做法的弊端是,如果PV比较高的情况,会有性能的问题,因为每次session访问都要操作数据库。

    2.session存储在redis,memcache这种缓存里面,这种一种比较通用的做法,性能好,易扩展.

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    win10右键新建markdown文件
    force down pool_member
    自控力差,你可能忽略了一种更底层的能力
    多线程的通信问题
    多线程的安全问题
    Java实现多线程的两种方式
    为什么你成不了数据分析高手?可能是缺少这个思维
    jstack && jmap
    对ElasticSearch主副分片的理解
  • 原文地址:https://www.cnblogs.com/maxomnis/p/5515547.html
Copyright © 2011-2022 走看看