php session 编码,php 如何以json格式存储session,而不是默认的内置编码?

php 如何以json格式存储session,而不是默认的内置编码?

折腾了下,即使session_save_handler被自己的类或者方法重写,write与read的出入数据都还是被序列化的,而且被session序列化不是一般的序列化...还是不能解解决memcached保存session数据为json的格式

回复内容:

php 如何以json格式存储session,而不是默认的内置编码?

折腾了下,即使session_save_handler被自己的类或者方法重写,write与read的出入数据都还是被序列化的,而且被session序列化不是一般的序列化...还是不能解解决memcached保存session数据为json的格式

找到了方案:

*/

class Memcached

{

/**

* @var \Memcached

*/

protected $memcached;

/**

* Create new memcached session save handler

* @param \Memcached $memcached

*/

public function __construct(\Memcached $memcached)

{

$this->memcached = $memcached;

}

/**

* Close session

*

* @return boolean

*/

public function close()

{

return true;

}

/**

* Destroy session

*

* @param string $id

* @return boolean

*/

public function destroy($id)

{

return $this->memcached->delete("sessions/{$id}");

}

/**

* Garbage collect. Memcache handles this with expiration times.

*

* @param int $maxlifetime

* @return boolean Always true

*/

public function gc($maxlifetime)

{

// let memcached handle this with expiration time

return true;

}

/**

* Open session

*

* @param string $savePath

* @param string $name

* @return boolean

*/

public function open($savePath, $name)

{

// Note: session save path is not used

$this->sessionName = $name;

$this->lifetime = ini_get('session.gc_maxlifetime');

return true;

}

/**

* Read session data

*

* @param string $id

* @return string

*/

public function read($id)

{

$_SESSION = json_decode($this->memcached->get("sessions/{$id}"), true);

if (isset($_SESSION) && !empty($_SESSION) && $_SESSION != null)

{

return session_encode();

}

return '';

}

/**

* Write session data

*

* @param string $id

* @param string $data

* @return boolean

*/

public function write($id, $data)

{

// note: $data is not used as it has already been serialised by PHP,

// so we use $_SESSION which is an unserialised version of $data.

return $this->memcached->set("sessions/{$id}", json_encode($_SESSION),

$this->lifetime);

}

}

可以考虑下写库

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值