介绍
这篇文章给大家介绍如何在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中使用复述,共享会话