哥们终于搞定了session放数据库里

哎,以前的系统session总是莫名其妙的丢失,放服务器进程里也不行。

老是丢失,然后客户端就无缘故的退出了。你设置session时间为1个小时也不行。

最后无奈,把session放数据库里了。哈,问题解决了。

用了1个星期了暂时没客户反映出问题。

也许每个人的需求不同吧,但是我仍旧觉得session放数据库里保险。

具体设置方法,不会的跟帖,我回复。

 

很抱歉呀,昨天忙忘记看帖了,原来有这么多朋友不知道这个呀。我现在就帖出来方法。

一,桌面——开始——运行——cmd
cd进入到“x:/WINDOWS/Microsoft.NET/Framework/v2.0.50727”
(不懂怎么操作cmd的,我也无奈了)

二,在cmd里继续写:
aspnet_regsql.exe -S 服务器ip -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c
例如
aspnet_regsql.exe -S 127.0.0.1 -U sa -P 7654321 -d StudentSession -ssadd -sstype c

所要放入的数据库:用你正在做的系统的数据库也可以,也可以写个新数据库。
例如我那条语句呀,我正在做一个学生系统,有个数据库student。
我想把session放入StudentSession 这个数据库里。
你执行完那句话就帮你创建好了这个数据库了,默认里边有几个表,和很多视图与存储过程。

三,在web.config里写

XML code
   
   
< sessionState mode ="SQLServer" sqlConnectionString ="server=127.0.0.1; database=StudentSession ;uid=sa ;pwd=7654321;" allowCustomSqlDatabase ="True" cookieless ="false" timeout ="20" />



还有不懂的就email给偶:woodynet@qq.com

 

 

执行完这些之后,你对session的操作,就自动有了对这个数据库的操作了。

既然是自动的,当然你无须理会它,如何insert,你退出时如何delete了。

它自动完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP可以通过`session_set_save_handler()`函数来自定义session的存储方式,例如将session存储到数据库。 以下是一个将session存储到MySQL数据库的示例代码: ```php <?php // 自定义session存储处理器 class MySessionHandler implements SessionHandlerInterface { private $db; public function open($save_path, $session_name) { $this->db = mysqli_connect("localhost", "username", "password", "database_name"); return true; } public function close() { mysqli_close($this->db); return true; } public function read($session_id) { $session_id = mysqli_real_escape_string($this->db, $session_id); $query = "SELECT session_data FROM session_table WHERE session_id = '$session_id'"; $result = mysqli_query($this->db, $query); if ($result) { $row = mysqli_fetch_assoc($result); return $row['session_data']; } return ''; } public function write($session_id, $session_data) { $session_id = mysqli_real_escape_string($this->db, $session_id); $session_data = mysqli_real_escape_string($this->db, $session_data); $query = "REPLACE INTO session_table (session_id, session_data) VALUES ('$session_id', '$session_data')"; mysqli_query($this->db, $query); return true; } public function destroy($session_id) { $session_id = mysqli_real_escape_string($this->db, $session_id); $query = "DELETE FROM session_table WHERE session_id = '$session_id'"; mysqli_query($this->db, $query); return true; } public function gc($maxlifetime) { $maxlifetime = intval($maxlifetime); $query = "DELETE FROM session_table WHERE session_timestamp < " . (time() - $maxlifetime); mysqli_query($this->db, $query); return true; } } // 注册自定义session存储处理器 $handler = new MySessionHandler(); session_set_save_handler($handler, true); // 启动session session_start(); ``` 在上面的示例,我们创建了一个名为`MySessionHandler`的自定义session存储处理器,并实现了`SessionHandlerInterface`接口的所有方法。其,`open()`方法用于打开数据库连接;`close()`方法用于关闭数据库连接;`read()`方法用于从数据库读取指定session ID的session数据;`write()`方法用于将session数据保存到数据库;`destroy()`方法用于删除指定session ID的session数据;`gc()`方法用于清除过期的session数据。 最后,我们将自定义session存储处理器注册到PHP,然后启动session即可。 注意,在实际生产环境,需要根据实际情况对代码进行修改和优化,以确保安全性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值