当前位置:首页 > PHP > 正文内容

全方位认识PHP的SESSION

高老师7年前 (2019-03-25)PHP1388

【一】.介绍session

由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保存的信息。

举例:

(1).访问我的网站http://www.gaojiufeng.cn,访问后发现本地的cookie有一个PHPSESSID=au63vsj6p5k35itclmbdufne66 ,服务器的cookies文件生成了一个sess_au63vsj6p5k35itclmbdufne66的文件

(2).当我再次访问我的网站,浏览器会自动携带cookie PHPSESSID=au63vsj6p5k35itclmbdufne66 来请求我的网站。

通过上面的例子,我们知道客户端的cookie中保存的sessionid和服务器的sessionid文件相关联,这样用户就能和系统交互,我们也知道用户的身份。这就是为什么PHP网站只需要拿到PHPSESSID=au63vsj6p5k35itclmbdufne66就能模拟登陆的原因了。

【二】.session只能保存字符串吗?

直接看代码:

$_SESSION['username'] = ['admin'];
$_SESSION['password'] = 'admin';

看来session是可以保存数组的,为什么呢?因为session文件保存的都是基于php序列化的内容,比如下面的cookies文件内容

username|a:1:{i:0;s:5:"admin";}password|s:5:"admin";

【三】.session只能保存在文件中吗?

session不仅仅只能保存到文件中,还能保存到redis或者mysql中,如果只能保存到文件中,那么负载均衡部署怎么办?

redis在php.ini的配置,也可以通过ini_set的php代码方式配置,一定要保证安装了redis扩展

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"   
//session.save_path = "tcp://127.0.0.1:6379?auth=123456"  有密码的写法

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/79.html

分享给朋友:

“全方位认识PHP的SESSION” 的相关文章

php多进程,php多进程处理任务,php多进程应用场景

php多进程,php多进程处理任务,php多进程应用场景

php多进程应用场景主要是非web端,fpm下是不支持多进程的,非类linux操作系统都不支持,请在cli模式使用.可以使用多进程做任务分发,批量计算,批量文件处理,批量爬虫,网络运维等等。下面看一份简单的入门demo//创建子进程 $pid=pcntl_fork(); //返回-1,创建失败,不...

php异步执行,php后台运行,如何在windows下让php后台运行

php异步执行,php后台运行,如何在windows下让php后台运行

如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php  D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...

php arrayaccess的应用场景:配置管理器

php arrayaccess的应用场景:配置管理器

上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...

php  RabbitMQ消息队列

php RabbitMQ消息队列

(1).config.php 配置文件<?php /**  * RabbitMQ_Config  */ $config = [     'host' => ...

swoole中的worker_num和task_worker_num

swoole中的worker_num和task_worker_num

(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...

php限制方法返回值类型

php限制方法返回值类型

php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int {    &nb...