yii2中session的存储推荐方式

最佳存储方式——redis:

较优存储方式——数据库:

以上配置是使用数据库来存储会话数据。默认情况下, 它会使用 db 应用组件连接数据库并将会话数据存储在 session 表。 因此,你必须创建如下的 session 表,

【参考:http://www.yiichina.com/doc/guide/2.0/tutorial-performance-tuning】

php memcache保存session的一个设置

php中,使用memcache作为session的save handler 一般会使用如下设置:

php.ini里:

session.save_handler = memcache
session.save_path = “localhost:11211″

项目配置里:

ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “127.0.0.1:11211″);
Defines a comma separated of hostname:portentries to use for session server pool, for example “sess1:11211, sess2:11211″.

If you want to use ‘memcacheD’ extention not ‘memcache’ (there are two diffrent extentions) for session control, you should pay attention to modify php.ini

Most web resource from google is based on memcache because It’s earlier version than memcacheD. They will say as following

But it’s not valid when it comes to memcacheD

you should modify php.ini like that

 

Look, there is no protocol indentifier

原文链接:http://hi.baidu.com/tianhuimin/item/242902026c11d6e1ff240dce

多服务器session共享之memcache(d)共享

为了使多服务器共享SESSION,最简单的方法是将它们的SESSION保存在它们所链接的Memcached服务器上。

目前我所使用的memcache PECL 版本中,可以直接设置 php.ini 来设定自己的 session.save_handler,大致如下:

或者,你也可以在需要链接Memcached服务器的web程序头文件中使用如下类似的代码:

其中,将192.168.1.1替换成你的Memcached服务器的IP地址,11211替换成Memcached服务器监听的端口号(默认是11211)。

这样,只要提供sessionID,就可从Memcached服务器中取出该sessionID所存储的session信息了。 继续阅读“多服务器session共享之memcache(d)共享”

Cross domain PHP Sessions:跨站点Session共享

所谓Cross domain PHP Sessions,即不限于同一域名,不限于同一服务器,不限于同一IP的多个网站共享Session。
这种情况之下的Session共享,是一种极端情况,但却经常遇到。这是因为,我们常常有多站点单点登录,或共用用户数据库。一次登录多站可访问的通行证模式,是普遍受欢迎的方式。
实现的方法如下:
1、首先,你要使用memcache,memcached保存session, 从而能够使得session数据能够保存到不同域名,不同IP的服务器上。
2、其次,保证多站点使用同一SESSIONID。这个方法很简单,只要把源站点的$_COOKIE[‘PHPSESSID’]传给目标站点即可。我们清楚,PHP网站,总会在COOKIE中保存一个名为$_COOKIE[‘PHPSESSID’]变量。所以,只要将这个传给目标站点即可。所以,接下来就是如何传的问题了。
3、建议的方法是,每一个网站建一个专用于跳转的PHP文件。此文件接收GET参数为目标跳转的URL。PHP只要根据参数生成象如下这样的代码即可:
header(‘Location: http://domain.com?sessid=’.urlencode($_COOKIE[‘PHPSESSID’]));
当然,这个PHP页面中,要对跳转的URL有所检测,是不是允许传入$_COOKIE[‘PHPSESSID’]的域名。如果这个PHP文件我们称为siteurl.php,那么,页面中的链接就成了:
http://thisdomain.com/siteurl.php?url=newdomain.php
这样,页面中也就没有$_COOKIE[‘PHPSESSID’]。
4、接受跳转的站点,可以通过以下途径读取这个共享的session.
在session_start()运行之前处理:
if ($_GET[‘sessid’]){
session_id($_GET[‘sessid’]);
}
这样,接受跳转的站点就可以读到已保存的session了

原文链接:http://bardo.iteye.com/blog/916316

KNDB Session For CodeIgniter

KNDB Session

Native Session makes good use of PHP’s native session handling abilities, but it does not allow the use of a database for session storage. KNDB Session (which stands for Kirilisa’s Native Database session) is a hybrid which is based upon Native Session (with some notable changes) but allows use of databases via PHP’s ability to store sessions in a DB. 继续阅读“KNDB Session For CodeIgniter”

Replacing CodeIgniter’s session by PHP’s Native Session

For last 8 months, I have been working on a web application. We are developing the application based onCodeIgniter framework. In our project there are normal web version and mobile view version. Some days ago we noticed that, some people can’t login their account via mobile version though there username & password are correct. After debugging and digging the problem we found that in iPod Touch 2G/3GS Safari browser, this problem is happening.

We are using CodeIgniter’s built in session library and that is different than normal PHP’s session. We found that for each visit of the user, the server can’t track the session and regenerating new session id each time. Very weird situation for us. As we coded all over based on CodeIginter’s session library’s function so its not optimal solution for us to remove the codes and use PHP’s native session. Because in that case there is high possibility to generate new bugs. After lots of searching in the net at last we found a wrapper class for CodeIgniter. 继续阅读“Replacing CodeIgniter’s session by PHP’s Native Session”