修改session的存储机制
<?php //一下这几个函数执行的顺序是:open read gc destroy write close //修改session的存储机制 //最起码应该有一个 读方法, 和一个 写方法。 //1, 我们先去建立 读方法 和 写方法。 //2, 告知session系统,使用我们的方法完成数据的读和写操作。 //建立读方法 /** * 利用 sessionID 获得session数据 *@param $sess_id string 当前会话的ID *@return string 当前的sessiondata (不需要考虑序列化与反序列化的问题) */ function sess_read($sess_id) { echo "read"; //查询的sql语句 $query = "select sess_data from sessions where sess_id="{$sess_id}""; $result = mysql_query($query); $row = mysql_fetch_assoc($result); //返回查询到的数据 return $row["sess_data"]; } //写方法 /** * @param $sess_id string 当前的sessionID * @param $sess_data string 当前的session数据,(序列化好的) */ function sess_write($sess_id, $sess_data) { echo "write"; //应该考虑到 当前的session记录是否存在 //存在应该update更新,不存在应该insert新建 $expire = time(); $query = "insert into sessions values ("{$sess_id}", "{$sess_data}", {$expire}) on duplicate key update sess_data="{$sess_data}", expire={$expire}"; return mysql_query($query); } /** *session_start 是执行的方法,用户初始化资源 * @param $save_path string php.ini中 session.save_path 的值。 * @param $sess_name string php.ini中 session.name 的值。ini_get()也可以获得。 * 这2参数就是php.ini文件中对应的值---可以输出看看 */ function sess_open($save_path, $sess_name) {//这2个参数可以不写 echo "open"; //连接上数据库 其他几个函数都可以用这个链接不会涉及到作用于的问题 $link = mysql_connect("localhost", "root", "1234abcd"); mysql_query("use test", $link); mysql_query("set names utf8"); } /** *在最后,释放资源的方法 */ function sess_close() { // echo "close"; mysql_close(); } /** * @param $sess_id string 当前的sessionID */ function sess_destroy($sess_id){ echo "destroy"; $query = "delete from sessions where sess_id="{$sess_id}""; return mysql_query($query); } /** *负责回收垃圾的函数 *@param $ttl 当前的session数据的最大生存周期(就是多少秒视为垃圾的那个描述---配置文件中可修改) */ function sess_gc($ttl) { // // echo "gc"; $expire = time() - $ttl; $query = "delete from sessions where expire < {$expire}"; return mysql_query($query); } //将我们的方法 告知给当前的session系统 //利用函数 session_set_save_handler(); session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); //开启session session_start(); $_SESSION["name"] = "leyangjun"; $_SESSION["age"] = "23"; //var_dump($_SESSION);
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: ThinkPHP 的模型使用对数据库增删改查(五)
- 下一篇: session修改存储机制写成类