php qstr,PHP实现多服务器共享SESSION 数据(2)

//多主机共享保存 SESSION ID 的 COOKIE

ini_set('session.cookie_domain',    $domain);

//将 session.save_handler 设置为 user,而不是默认的 files

session_module_name('user');

//定义 SESSION 各项操作所对应的方法名:

session_set_save_handler(

array('My_Sess', 'open'),   //对应于静态方法 My_Sess::open(),下同。

array('My_Sess', 'close'),

array('My_Sess', 'read'),

array('My_Sess', 'write'),

array('My_Sess', 'destroy'),

array('My_Sess', 'gc')

);

}   //end function

function open($save_path, $session_name) {

return true;

}   //end function

function close() {

global $MY_SESS_CONN;

if ($MY_SESS_CONN) {    //关闭数据库连接

$MY_SESS_CONN->Close();

}

return true;

}   //end function

function read($sesskey) {

global $MY_SESS_CONN;

$sql = 'SELECT data FROM sess WHERE sesskey=' . $MY_SESS_CONN->qstr($sesskey) . ' AND expiry>=' . time();

$rs =& $MY_SESS_CONN->Execute($sql);

if ($rs) {

if ($rs->EOF) {

return '';

} else {    //读取到对应于 SESSION ID 的 SESSION 数据

$v = $rs->fields[0];

$rs->Close();

return $v;

}   //end if

}   //end if

return '';

}   //end function

function write($sesskey, $data) {

global $MY_SESS_CONN;

$qkey = $MY_SESS_CONN->qstr($sesskey);

$expiry = time() + My_SESS_TIME;    //设置过期时间

//写入 SESSION

$arr = array(

'sesskey' => $qkey,

'expiry'  => $expiry,

'data'    => $data);

$MY_SESS_CONN->Replace('sess', $arr, 'sesskey', $autoQuote = true);

return true;

}   //end function

function destroy($sesskey) {

global $MY_SESS_CONN;

$sql = 'DELETE FROM sess WHERE sesskey=' . $MY_SESS_CONN->qstr($sesskey);

$rs =& $MY_SESS_CONN->Execute($sql);

return true;

}   //end function

function gc($maxlifetime = null) {

global $MY_SESS_CONN;

$sql = 'DELETE FROM sess WHERE expiry

$MY_SESS_CONN->Execute($sql);

//由于经常性的对表 sess 做删除操作,容易产生碎片,

//所以在垃圾回收中对该表进行优化操作。

$sql = 'OPTIMIZE TABLE sess';

$MY_SESS_CONN->Execute($sql)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值