CodeIgniter框架在3.0之前的版本session是存储到cookie中的,在实际的Web应用中有许多不便。github上有很多让CI框架中使用PHP原生session的库。我选择了CodeIgniter-Native-Session
安装方法很简单,照着作者提供的安装方法进行安装即可。下面提供一个验证的方法。
在192.168.0.1上起一个memcache用于存储php的session,启动命令如下:
/usr/local/webserver/memcached/bin/memcached -d -c20480 -u root -m 5 -l 192.168.0.1 -p10000
php.ini中将session存储到memcache中。php.ini中相关部分的设置如下:
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
;session.save_handler = files
session.save_handler = memcache
session.save_path = tcp://192.168.0.1:10000
设置好之后,重启php fast cgi。
编写测试程序test.php:
class Test extends CI_Controller {
public function index()
{
//$this->load->view('welcome_message');
$this->load->library('session');
print_r($this->session->all_userdata());
}
}
/* End of file test.php */
/* Location: ./application/controllers/test.php */
用浏览器访问test这个controller,通过firebug可以看到cookie中PHPSESSID的值是c0r5sr59sng0535613ui9h7hb5。
通过命令行验证相关session是否存到了memcache中,
telnet 192.168.0.1:10000
以c0r5sr59sng0535613ui9h7hb5为key获取相关信息。
get c0r5sr59sng0535613ui9h7hb5
可以看到有类似下面的结果输出,则session已经存到了memcache中。注意,dev是设置在config/session.php里面的sess_namespace的值。
VALUE c0r5sr59sng0535613ui9h7hb5 0 97
dev|a:2:{s:10:"session_id";s:32:"d6be0f31ed57feadda66293546ac03bd";s:9:"expire_at";i:1378383924;}
END
除非注明,本博客文章均为原创,转载请以链接形式标明本文地址
本文地址: http://blog.cnwyhx.com/?p=221