热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将Session写入数据库是不是PHP原来的session完全就被自己替代了,相当于自己实现了session?

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?
我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

回复内容:

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

这个问题我觉得首先要先明确到底什么是session,个人觉得session是一种实现,跟COOKIE性质不太一样。

举例登录 http://segmentfault.com/

  • 登录成功的时候服务器会生成一个类似diM4og.6c3c602eff435b68a0e2aeca90254482.a 的随机字符串,并将这个字符串与我的id(1030000000093602)关联起来存储在 服务器端 ,这样服务器端就知道 diM4og.6c3c602eff435b68a0e2aeca90254482.a 这个字符串属于哪个用户了。

    当然存储方式就随意选择了,以文件形式存储、数据库、redis、memcached

  • 同时会在用户登录成功后将 diM4og.6c3c602eff435b68a0e2aeca90254482.a 这个字符串以COOKIE的形式发送给客户端浏览器。 以 sf 为例,这个字符串存储在一个名为 sfsess 的COOKIE中。

  • 这样,登录后的每次访问,服务器端都会从客户端发来的COOKIE中读取中这个字符串,在服务器端查询是否有这个字符串的登录记录,有的话根据与之关联的 id 显示用户已登录。

这就是 session 的实现原理,python,java做的网站也一样,都是这个道理


下面说下PHP自带的 $_SESSION ,在我们用这句代码的时候,其实php同样做了上面的事情,只不过它是自动的,不用考虑具体实现。php服务器端存储session字符串是以文件形式存储的,客户端的COOKIE名是 PHPSESSION ,session过期什么的都由php自动管理了,当然COOKIE名称和过期时间等都可以通过配置php更改。

这就是php的优点,其实语言需要单独实现的session模块它一句代码搞定了。当然这也是它的缺点,使我们难以理解session的具体概念以及实现原理。

我看见很多都将session写入数据库。如果将session写入数据库,是不是相当于自己实现了数据库的session?原来自带的就失效了?

所以并不存在自带的失不失交的问题,只是以更屌的方式自己实现了session的验证而已,抛开了php的傻瓜代码。

另:sf 应该用的 redis 存储,Typecho用的数据库存储,楼主可以参考一下。

只是更改了session存放的地方,session还存在,只是从数据库里调用。

推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 缓存 分布式锁 Redis
    分布式锁现在Redis基本上没家公司都在使用,只是各自使用的场景不以,但Redis最出名的还是做为缓存服务器,提搞服务器的的吞吐量,下面我们来围绕这个作为缓存做一个总结今天的目标其 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了python面试题——数据库和缓存(46题)相关的知识,希望对你有一定的参考价值。1、列举常见的关系型数据库和非关系型都有那些? ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • 一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的性能选项卡当中,关于memcache进行如下配置:cfg_memcache_enable:是否启用memcache缓存,如果为否(N) ... [详细]
author-avatar
张。、
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有