深入了解session的执行步骤

简介: 深入了解session的执行步骤

关于php session的实现方法,在之前我其实已经发过很多个相关的文章了

php session基本原理解析

windows php关于session临时文件的一个坑

session会话

这篇文章,将使用strace工具去追踪php的session到底是如何执行的

安装strace工具很简单,只需要:

apt-get install strace

首先,我们准备一个非常纯洁的test.php文件:

<?php

先测试下strace命令:

strace php test.php


image.png

由于php启动过程非常多,我只截图了开始运行以及结束的系统调用执行过程

session start

现在,我们开始写session的测试代码:

<?php
session_start();//session开始i
$_SESSION\['name'\]='仙士可';
$_SESSION\['age'\]=21;
echo 1;//echo个1查看顺序
$_SESSION\['qq'\]=1067197739;
//赋值多个,查看存储的步骤

由于使用的是php-cli模式,不好测试header头以及二次访问

可看出,session start有以下几个步骤:

1:随机生成一个session id

2:尝试获取session文件,如果不存在则新增

3:发送一个header头(截图没有体现)

4:文件加锁,准备写入数据

在文件执行完毕之后,将$_SESSION的值序列化后存储到文件中

这样,session的周期已经完毕

存在session文件

第一次访问php,则会随机生成一个session文件发送header头,等待浏览器第二次请求携带cookie,进行判断session_id,我们可以通过上面已经生成的session_id,然后通过session_id函数赋值,进行模拟浏览器携带cookie的情况:

<?php
session_id('g3ddi98a484aer6l4sbqmllpl6');
session_start();//session开始
var\_dump($\_SESSION);

image.png

可看出,第二次访问之后,php会读取原有的session文件,赋值到$_SESSION全局变量中,然后更新session文件的使用时间,以免被gc

删除session

通过session_destroy()去销毁session

<?php
session_id('g3ddi98a484aer6l4sbqmllpl6');
session_start();//session开始
session_destroy();// 销毁session

image.png

session gc

在php中,原生的session非常恶心,恶心的点在于它的gc机制

php session的gc是通过几率触发,然后遍历session文件,通过获取所有session文件的最后修改时间进行比对,再删除文件,这会造成以下几种情况:

1:几率gc,意味着session过期不会马上删除文件

2:遍历gc,意味着每次gc都要消耗大量的性能

本人通过运行n次文件,去模拟多个session

for((i=1;i<=100;i++));  
do   
php test.php
done

image.png

调用session gc

session\_gc();//session\_gc;

image.png

可看到在不断的遍历session文件

目录
相关文章
|
5天前
|
云安全 人工智能 自然语言处理
|
9天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
850 26
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
435 4
|
12天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
822 59
Meta SAM3开源:让图像分割,听懂你的话
|
2天前
|
弹性计算 网络协议 Linux
阿里云ECS云服务器详细新手购买流程步骤(图文详解)
新手怎么购买阿里云服务器ECS?今天出一期阿里云服务器ECS自定义购买流程:图文全解析,阿里云服务器ECS购买流程图解,自定义购买ECS的设置选项是最复杂的,以自定义购买云服务器ECS为例,包括付费类型、地域、网络及可用区、实例、镜像、系统盘、数据盘、公网IP、安全组及登录凭证详细设置教程:
172 114
|
5天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
376 19
|
3天前
|
人工智能 安全 小程序
阿里云无影云电脑是什么?最新收费价格个人版、企业版和商业版无影云电脑收费价格
阿里云无影云电脑是运行在云端的虚拟电脑,分企业版和个人版。企业版适用于办公、设计等场景,4核8G配置低至199元/年;个人版适合游戏、娱乐,黄金款14元/月起。支持多端接入,灵活按需使用。
267 164