ZF2的Session处理

ZendFramework之中,可以有多种办法去处理session。
这些全部都以session handler的设置而不同
一般情况下默认是以文件形式存储的
当然如果你要建立高性能网站
或许你会采用用缓存的形式来处理session
在zf2的session manager中,默认的session handler是通过一次设置以后而改变默认的
也就是说。你一旦改变了handler,那么下次还是会用这个handler来处理。
我这里是一段代码,用memcache去处理session
这个是在

?
module.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
'factories' => array (
       'MyCache' => function ( $sm ) {
                 $config = $sm ->get( 'Config' );
                 $driver = $config [ 'cache' ][ 'driver' ];
                 $cacheConfig = $config [ 'cache' ][ $driver ];
                 $adapterPluginManager = StorageFactory::getAdapterPluginManager();
                 switch ( $driver ) {
                     case 'mymemcached' :
                         $adapterPluginManager ->setInvokableClass( $driver , 'FrontBase\Cache\Memcached' );
                         $servers = $cacheConfig [ 'memcached_servers' ];
                         $memcached_config = array (
                             'adapter' => array (
                                 'name' => $driver ,
                                 'options' => array (
                                     'servers' => $servers ,
                                     'ttl' => $cacheConfig [ 'default_ttl' ],
                                 ),
                             ),
                         );
                         $memcached = StorageFactory::factory( $memcached_config );
                         return $memcached ;
                         break ;
                     case 'myredis' :
                         $adapterPluginManager ->setInvokableClass( $driver , 'FrontBase\Cache\Redis' );
                         $server = $cacheConfig [ 'redis_servers' ][0];
                         $redis_config = array (
                             'adapter' => array (
                                 'name' => $driver ,
                                 'options' => array (
                                     'server' => $server ,
                                 ),
                             ),
                         );
                         $redis = StorageFactory::factory( $redis_config );
                         return $redis ;
                         break ;
                 }
             },
 
             'MySessionManager' => function ( $sm ) {
                 $config = $sm ->get( 'Config' );
                 $sessionConfig = $config [ 'session' ];
                 $saveHandler = $sessionConfig [ 'save_handler' ];
                 switch ( $saveHandler ) {
                     case 'Cache' :
                         $cache = $sm ->get( 'MyCache' );
                         $sessionCache = clone $cache ;
                         $sessionCache ->getOptions()->setNamespace( 'mysession' )->setTtl( $sessionConfig [ 'expiration' ]);
                         $saveHandler = new Cache( $sessionCache );
                         $manager = new ZendSessionManager();
                         $manager ->setSaveHandler( $saveHandler );
                         return $manager ;
                         break ;
                 }
             },
 
             'Account\Helpers\Captcha' => function ( $sm ) {
                 $sessionManager = $sm ->get( 'MySessionManager' );
                 $captcha = new Captcha\Captcha( $sessionManager );
                 return $captcha ;
             },
     );

如果调用了验证码的服务,那么这套session体系才会运转,否则这套session体系就不运转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值