如何在PHP中使用复述,共享会话

  介绍

这篇文章给大家介绍如何在PHP中使用复述,共享会话,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> 1。通过php自身会话配置实现

#,使用,redis 作为存储方案   session.save_handler =复述   时间=session.save_path “tcp://127.0.0.1:6379"   #,若设置了连接密码,,则使用如下   时间=session.save_path “tcp://127.0.0.1:6379 ? auth=密码“

测试代码

& lt; php ?   报错(“session.save_handler",,“redis");   报错(“session.save_path",,“tcp://127.0.0.1:6379");      session_start ();   echo “& lt; pre>“;   $ _SESSION [& # 39; usertest& # 39; .rand (1、5))=1;   var_dump ($ _SESSION);      echo “& lt;/pre>“

输出↓

阵列(2){
,[“usertest1"]=祝辞
,int (88)
,[“usertest3"]=祝辞
,int (1)
}
usertest1 |我:1;usertest3 |我:1;

评价

<李>

优点:实现简单,无需修改php代码

<李>

缺点:配置不支持多样化,只能应用于简单场景

<强> 2。设置用户自定义会话存储函数

通过session_set_save_handler()函数设置用户自定义会话函数。

 session_set_save_handler  (, callable  open 美元;,,callable  close 美元;,,callable  read 美元;,,callable  write 美元;,,callable  destroy 美元;,,callable  gc 美元;[,callable  create_sid 美元;[,callable  validate_sid 美元;[,callable  update_timestamp 美元;]]],),:bool
  ,,
  #,祝辞=php5.4
  session_set_save_handler  (, object  sessionhandler 美元;[,bool  register_shutdown 美元;=,TRUE ],),:, bool 

在配置完会话存储函数后,再执行session_start()即可。

具体代码略,以下提供一份Memcached的(来自Symfony框架代码):

& lt; php ?/*   ,*却;能够file  is  part  of 从而Symfony 包。   ,*   *大敌;(c), Fabien  Potencier  & lt; fabien@symfony.com>   ,*   ,* For 从而full  copyright 以及license 信息,please  view 从而许可证   ,* file  that  was  distributed  with 却;能够source 代码。   ,*/namespace  Symfony存储\ \ HttpFoundation \会议\ \组件处理程序;/* *   ,* MemcacheSessionHandler。   ,*   ,* @author  Drak  & lt; drak@zikula.org>   ,*/class  MemcacheSessionHandler  implements  \ SessionHandlerInterface   {   ,/* *   ,,*,@var  \ Memcache  Memcache 司机。   ,,*/private 才能;memcache美元;      ,/* *   ,,*,@var  int  Time 用live 拷贝秒   ,,*/private 才能,ttl美元;      ,/* *   ,,*,@var  string  Key  prefix  for  shared 环境。   ,,*/private 才能;$前缀;      ,/* *   ,,*,构造函数。   ,,*   ,,*,List  of  available 选项:   ,,*,*,前缀:,,prefix 用use  for 从而memcache  keys 拷贝order 用avoid 碰撞   ,,*,*,expiretime:,, time 用live 拷贝秒   ,,*   ,,*,@param  \ Memcache  Memcache 美元;A  \ Memcache 实例   ,,*,@param  array ,, options 美元;An  associative  array  of  Memcache 选项   ,,*   ,,*,@throws  \ InvalidArgumentException  When  unsupported  options 断开连接,通过   ,,*/public 才能;function  __construct (\ Memcache  memcache美元,array  options 美元;=,数组())   {才能   ,,,if  ($ diff =, array_diff(中的(选项),数组(& # 39;前缀# 39;,,& # 39;expiretime& # 39;))), {   ,,,,,throw  new  \ InvalidArgumentException (sprintf (   ,,,,,,,& # 39;从而following  options 断开连接;not  supported “% s" & # 39;,,内爆(& # 39;,& # 39;,,美元diff)   ,,,,,));   ,,,}      ,,,这个→美元memcache =, memcache美元;   ,,,这个→美元ttl =,收取(选择美元[& # 39;expiretime& # 39;]), ?, (int),选择美元[& # 39;expiretime& # 39;],:, 86400;   ,,,这个→美元prefix =,收取(选择美元[& # 39;前缀# 39;]),?,选择美元[& # 39;前缀# 39;],:,& # 39;sf2s& # 39;;   ,,}      ,/* *   ,,*,{@inheritdoc}   ,,*/null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在PHP中使用复述,共享会话